我们尝试在两台服务器之间建立 40gbit 连接,使用 iperf 时 CPU 行为异常。它只使用了 40Gbit/s 左右的速度。
服务器规格:
- AMD EPYC 7413
- 8x MultiBitECC 3200 MHz 16384 MB 内存
- 超微 H12SSL-CT
- 英特尔 XL710 40GBe
- Ubuntu 20.04.3 LTS 5.4.0-84-gene
服务器通过光纤直接连接。无需交换机。
例子
host1# iperf -s
host2# iperf -c host1 -i 1 -t 120
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 1.39 GBytes 12.0 Gbits/sec
[ 3] 1.0- 2.0 sec 1.00 GBytes 8.61 Gbits/sec
[ 3] 2.0- 3.0 sec 1.03 GBytes 8.88 Gbits/sec
[ 3] 3.0- 4.0 sec 1.04 GBytes 8.92 Gbits/sec
[ 3] 4.0- 5.0 sec 1021 MBytes 8.56 Gbits/sec
[ 3] 5.0- 6.0 sec 1.05 GBytes 9.01 Gbits/sec
[ 3] 6.0- 7.0 sec 1.02 GBytes 8.78 Gbits/sec
[ 3] 7.0- 8.0 sec 1.02 GBytes 8.74 Gbits/sec
[ 3] 8.0- 9.0 sec 1.01 GBytes 8.69 Gbits/sec
[ 3] 9.0-10.0 sec 1.02 GBytes 8.75 Gbits/sec
[ 3] 10.0-11.0 sec 1.05 GBytes 9.03 Gbits/sec
[ 3] 11.0-12.0 sec 1015 MBytes 8.51 Gbits/sec
[ 3] 12.0-13.0 sec 1.02 GBytes 8.72 Gbits/sec
[ 3] 13.0-14.0 sec 1014 MBytes 8.51 Gbits/sec
[ 3] 14.0-15.0 sec 974 MBytes 8.17 Gbits/sec
[ 3] 0.0-15.0 sec 15.6 GBytes 8.92 Gbits/sec
我在互联网上找到了官方的性能调优指南AMD还有一些fasterdata.es.net
他们建议进行某些系统设置,例如更改 CPU 调节器和 TCP 缓冲区。我相应地进行了更改,但只获得了 1Gbit/s 的改进。
当我检查 CPU 时钟速度时,运行 iperf 时 CPU 时钟速度总是降到 400MHZ 左右。
有没有建议为什么 iperf 会让 CPU 进入睡眠状态,或者我如何提高单线程 tcp 传输速度?运行多个 tcp 线程可以更好地利用带宽,但这不是我们的用例。
谢谢
答案1
我将 BIOS 中的全局 C 状态控制从自动更改为禁用,并设置
tuned-adm 配置文件网络吞吐量
我不确定这是否是最终的解决方案,但目前它有效。
编辑:
最后,BIOS 更新也是必要的。但是 tuned-adm 仍然可以提高性能。