1.4. 增加 NIC 的传输队列长度,以减少传输错误数
内核在传输数据包前,将它们存储在传输队列中。默认长度(1000 个数据包)通常对于 10 Gbps 足够了,通常对于 40 Gbps 网络也足够了。但是,在更快的网络中,或者遇到适配器上传输错误数增加,请增加队列长度。
流程
显示当前传输队列长度:
ip -s link show enp1s0
# ip -s link show enp1s0 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
enp1s0接口的传输队列长度(qlen)是1000。监控网络接口的软件传输队列丢弃的数据包计数:
tc -s qdisc show dev enp1s0
# tc -s qdisc show dev enp1s0 qdisc fq_codel 0: root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64 Sent 16889923 bytes 426862765 pkt (dropped 191980, overlimits 0 requeues 2) ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您遇到较高或不断增加的传输错误计数,请设置更高的传输队列长度:
识别使用此接口的 NetworkManager 连接配置文件:
nmcli connection show
# nmcli connection show NAME UUID TYPE DEVICE Example-Connection a5eb6490-cc20-3668-81f8-0314a27f3f75 ethernet enp1s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新连接配置文件,并增加传输队列长度:
nmcli connection modify Example-Connection link.tx-queue-length 2000
# nmcli connection modify Example-Connection link.tx-queue-length 2000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将队列长度设置为当前值的两倍。
应用更改:
nmcli connection up Example-Connection
# nmcli connection up Example-ConnectionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示传输队列长度:
ip -s link show enp1s0
# ip -s link show enp1s0 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 2000 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 监控丢弃的数据包计数:
tc -s qdisc show dev enp1s0
# tc -s qdisc show dev enp1s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果
丢弃的计数还在增加,请再次加倍传输队列长度。重复此过程,直到计数不再增加。
!:context: