第 5 章 为高吞吐量调优 TCP 连接
在 Red Hat Enterprise Linux 上调优与 TCP 相关的设置以提高吞吐量、缩短延迟或防止诸如数据包丢失等问题。
5.1. 使用 iperf3测试 TCP 吞吐量 复制链接链接已复制到粘贴板!
iperf3
工具提供了服务器和客户端模式,来在两个主机之间执行网络吞吐量测试。
应用程序的吞吐量取决于许多因素,如应用程序使用的缓冲区大小。因此,测试工具(如 iperf
3)测量的结果可能与生产工作负载下服务器上应用程序的测量结果有很大不同。
先决条件
-
iperf3
软件包已安装在客户端和服务器上。 - 任何一个主机上都没有其他服务导致对测试结果产生严重影响的网络流量。
- 对于 40 Gbps 和更快的连接,网卡支持 Accelerated Receive Flow Steering(ARFS),且该功能在接口上已启用。
流程
可选:显示服务器和客户端上网络接口控制器(NIC)的最大网络速度:
ethtool enp1s0 | grep "Speed"
# ethtool enp1s0 | grep "Speed" Speed: 100000Mb/s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在服务器上:
临时在
firewalld
服务中打开默认的iperf3
TCP 端口 5201 :firewall-cmd --add-port=5201/tcp
# firewall-cmd --add-port=5201/tcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在服务器模式下启动
iperf3
:iperf3 --server
# iperf3 --server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 服务现在等待传入的客户端连接。
在客户端中:
开始测量吞吐量:
iperf3 --time 60 --zerocopy --client 192.0.2.1
# iperf3 --time 60 --zerocopy --client 192.0.2.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --time <seconds>
:定义客户端停止传输时的时间(以秒为单位)。将此参数设置为您希望工作的值,并在稍后的测量中增加它。如果客户端终止的数据包比传输路径上的设备更快,或者服务器可以处理数据包,则可以丢弃数据包。
-
--zerocopy
:启用零复制方法,而不是使用write()
系统调用。只有在您要模拟可零复制的应用程序或在单个流上达到 40 Gbps 及更多时,才需要这个选项。 -
--client <server>
:启用客户端模式,并设置运行iperf3
服务器的服务器的 IP 地址或名称。
等待
iperf3
完成测试。服务器和客户端都显示每秒的统计信息,并在结尾显示总结。例如,以下是客户端上显示的总结:[ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 101 GBytes 14.4 Gbits/sec 0 sender [ 5] 0.00-60.04 sec 101 GBytes 14.4 Gbits/sec receiver
[ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 101 GBytes 14.4 Gbits/sec 0 sender [ 5] 0.00-60.04 sec 101 GBytes 14.4 Gbits/sec receiver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个示例中,平均比特率为 14.4 Gbps。
在服务器上:
-
按 Ctrl+C 停止
iperf3
服务器。 关闭
firewalld
中的 TCP 端口 5201:firewall-cmd --remove-port=5201/tcp
# firewall-cmd --remove-port=5201/tcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
按 Ctrl+C 停止