我最近在几台机器上安装了几个 10Gbit 以太网卡,这些机器连接到大约 80 个运行分布式文件系统 (Lustre) 的商品节点的 LAN。10Gbit 卡在文件操作方面取得了良好的性能,并且正常运行。
但是,我用 C 编写了一个自定义客户端应用程序,它将大块数据异步发送到网络中的多个节点。客户端应用程序运行的机器有一个 10GB 以太网卡,所有目标节点都有一个 1GB 以太网卡 - 所以我应该能够获得 10 gbits 的理论最大发送传输速率。
如果我在带有 1Gbit 卡的机器上运行客户端应用程序,它很容易在持续的时间内最大限度地使用卡。但奇怪的是,如果我在带有 10Gbit 卡的机器上运行相同的应用程序,它的性能会很差(大约每秒 20-30 兆比特)。
该程序是使用普通 TCP 套接字用 C 编写的。10Gbit 需要什么特殊设置吗?因为它在 1Gbit 卡上获得最大性能很奇怪,但在 10Gbit 卡上性能很差。同样,问题不在于 10Gbit 卡本身,因为分布式文件系统 (Lustre) 使用 10Gbit 卡获得了良好的性能。
任何想法/建议?
小智 5
我注意到 10gb 和 1gb lan 段之间的一个问题是默认 MTU 不同。10gb 以太网使用 9000 的默认 MTU,而不是 1gb 以太网的默认 MTU 1500。您可以将 10g 上的 MTU 更改为较低的数字,也可以设置您的路由器来为您分解巨型数据包。
这让我有些头疼,因为如果没有配置这两件事之一,就会有很多数据包碎片。