Linux 网络性能tuning向导(4)

0073d76b 00000000 000049ae 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000000d2 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000015c 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000002a 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

对于上面的示例,netdev_max_backlog不需要更改,因为丢弃数量保持在0:

 

For CPU0

Total droppedno_budget lock_contention

0073d76b 00000000 000049ae 00000000
For CPU1

Total droppedno_budget lock_contention

000000d2 00000000 00000000 00000000

每列中的统计信息以十六进制提供。 默认的netdev_max_backlog值为1000.然而,这对于以1Gbps操作的多个接口,或甚至以10Gbps的单个接口来说可能是不够的。 尝试将此值加倍并观察/ proc / net / softnet_stat文件。 如果值加倍,则降低丢包增加的速率,再次加倍并再次测试。 重复此过程,直到建立最佳大小,并且丢包率不增加。 可以使用以下命令更改积压,其中X是要设置的所需值:

# sysctl -w net.core.netdev_max_backlog=X

 

 

Adapter RX and TX Buffer Tuning

 

适配器缓冲区默认值通常设置为小于最大值。 通常,增加接收缓冲区大小单独足以防止数据包丢弃,因为它可以允许内核略微更多的时间来排空缓冲区。 结果,这可以防止可能的分组丢失。 以下接口具有8 KB缓冲区的空间,但仅使用1 KB:

 

# ethtool -g eth3 Ring parameters for eth3:

Pre-set maximums:

RX: 8192

RX Mini: 0

RX Jumbo: 0

TX: 8192

Current hardware settings:

RX: 1024

RX Mini: 0

RX Jumbo: 0

TX: 512 

将RX和TX缓冲器增加到最大值:

 

# ethtool -G eth3 rx 8192 tx 8192

 

 

 

Adapter Transmit Queue Length 

 

传输队列长度值确定在传输之前可以排队的数据包数。 默认值1000通常适用于当今的高速10Gbps或甚至40Gbps网络。 但是,如果适配器上的数字传输错误正在增加(红色部分统计),请考虑将其倍增。

 

vpp2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::14f7:b8ff:fe72:a52f prefixlen 64 scopeid 0x20<link>
ether 16:f7:b8:72:a5:2f txqueuelen 1000 (Ethernet)
RX packets 15905 bytes 1534810 (1.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 15905 bytes 1534810 (1.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

 

Module parameters

每个网络接口驱动程序通常作为可加载的内核模块。 可以使用modprobe命令加载和卸载模块。 这些模块通常包含可用于进一步调整设备驱动程序和NIC的参数。 可以使用modinfo <drivername>命令查看这些参数。 记录特定驱动程序参数超出了本文档的范围。 有关这些参数的说明,请参阅硬件手册,驱动程序文档或硬件供应商。 Linux内核通过sysfs路径/ sys / module / <drivername> / parameters导出模块参数的当前设置例如,给出驱动程序参数:

 

Linux 网络性能tuning向导

 可以在sysfs中检查每个驱动程序参数的当前值。 例如,要检查udp_rss参数的当前设置:

 

# ls /sys/module/mlx4_en/parameters

inline_thold  num_lro  pfcrx  pfctx  rss_mask  rss_xor  tcp_rss  udp_rss

# cat /sys/module/mlx4_en/parameters/udp_rss

1

 

 

Adapter Offloading

 

为了减少系统的CPU负载,现代网络适配器具有将一些网络处理负载移动到网络接口卡上的卸载功能。 例如,内核可以向NIC提交大(最多64k)个TCP段,然后NIC将拆分为MTU大小的段。 这个特殊功能称为TCP分段卸载(TSO)。

 

 

卸载设置由ethtool -K ethX管理。

常用设置包括:
•GRO:通用接收卸载

•LRO:大型接收卸载

•TSO:TCP分段卸载

•RX校验和=接收数据完整性处理

•TX校验和=发送数据完整性处理(TSO所需)

Jumbo Frames

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14794.html