2 端口 10Gbe NIC 性能仅为预期的一半

2 端口 10Gbe NIC 性能仅为预期的一半

我无法达到英特尔双端口 82599EB 10 千兆的预期吞吐量。我尝试了很多方法,想知道是否有什么我可以尝试但遗漏的方法。

我的硬件配置

两台服务器均装有 OpenSUSE 和 Intel 双端口 82599EB 10GbE。它们手动配置为静态 IP,并且一台机器上的每个端口都连接到第二台机器上的端口。

lspci -vv

吞吐量测试

我正在使用 iperf 进行测试。这些卡由 ixgbe 驱动。

在接收端,我运行

iperf -s

在发射机端:

iperf -c 192.168.1.10 -t 20 -B 192.168.1.20
iperf -c 192.168.1.11 -t 20 -B 192.168.1.21

现在每个接口大约有 4.x Gb。如果我只运行一个接口,我就能得到 9.x Gb。

配置尝试

我浏览了 SE 网站和许多其他文章。以下是我发现的三篇有用的文章。

  1. 网络连接 — 调整英特尔® 以太网适配器吞吐量性能
  2. https://www.kernel.org/doc/Documentation/networking/ixgbe.txt
  3. http://www.redhat.com/promo/summit/2008/downloads/pdf/Thursday/Mark_Wagner.pdf(PDF)

真正有帮助的两件事:

  1. 通过将 MTU 设置为 9000 来使用巨型帧。
  2. 增加 rmem 设置/etc/sysctl.conf

但是,两个通道的总速度仍然在 9.5Gbe 左右。我认为每个通道应该达到 9Gbe 或更多。

我尝试过但没有取得多大成功的方法:

  • 使用 ethtool -c 来改变中断合并
  • 使用 ethtool 禁用/启用流量控制

根据评论进行编辑

为了测试 CPU 利用率,我使用了mpstat -P ALL 5。在传输服务器上,我看到利用率为 61%。

01:12:59 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
...
01:12:59 PM    4    0.00    0.00   61.33    0.00    0.00    9.38    0.00    0.00   29.29

那应该没问题吧?在接收器上我看到最大值是 30%。

使用 lspci,我得到了以下信息。如果需要,我可以发布完整的输出,但我认为这显示了所需的 pcie 信息:

发件人:

1: LnkCap: Port #16, Speed 5GT/s, Width x8, ASPM L0s, Latency L0 <2us, L1 <32us
                        ClockPM- Surprise- LLActRep- BwNot-
   LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-
                    ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
   LnkSta: Speed 5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
   DevCap2: Completion Timeout: Range ABCD, TimeoutDis+
   DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
   LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                     Compliance De-emphasis: -6dB
2: LnkCap: Port #16, Speed 5GT/s, Width x8, ASPM L0s, Latency L0 <2us, L1 <32us
                        ClockPM- Surprise- LLActRep- BwNot-
   LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
   LnkSta: Speed 5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
   DevCap2: Completion Timeout: Range ABCD, TimeoutDis+
   DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
   LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
   Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance De-emphasis: -6dB

接收者:

 1: LnkCap: Port #0, Speed 5GT/s, Width x8, ASPM L0s, Latency L0 <1us, L1 <8us
                        ClockPM- Surprise- LLActRep- BwNot-
    LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
    LnkSta: Speed 5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
    DevCap2: Completion Timeout: Range ABCD, TimeoutDis+
    DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
    LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                             Compliance De-emphasis: -6dB
2: LnkCap: Port #0, Speed 5GT/s, Width x8, ASPM L0s, Latency L0 <1us, L1 <8us
                        ClockPM- Surprise- LLActRep- BwNot-
   LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
   LnkSta: Speed 5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
   DevCap2: Completion Timeout: Range ABCD, TimeoutDis+
   DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
   LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
   Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance De-emphasis: -6dB

5 G/T x8 应该够了吧?

相关内容