RSS(Receive-Side Scaling)网卡的多队列负载分流技术为了更好的利用多核系统。可以将网卡的数据流分配到多个rx queue,多个队列再分配到多个CPU核上,多个CPU并 行处理数据包,大大提升网络处理能力。但是有可能造成同一个网络会话被分配到多 个rx queue上,导致应用层处理会出现cache thrashing。默认Intel 82599网卡驱动有64个 队列,建议降低此数值。
以主机配置6个Intel 82599万兆网口为例
1、 配置网卡RSS参数(需要暂停网络和业务):
rmmod ixgbe /*卸载旧驱动*/modprobe ixgbe RSS=16,16,16,16,16,16
2、检查是否已经配置成功,RxQ、TxQ修改为16:
dmesg | grep RX
或者
egrep 'CPU|eth1' /proc/interrupts
或者
ls -l /sys/devices/*/*/device_pci_address/msi_irqsls -l /sys/devices/*/*/0000:01:00.0/msi_irqs
3. 将配置优化到驱动的配置文件,重启依然有效。
在/etc/modprobe.conf中追加options ixgbe RSS=16,16,16,16,16,16这样服务器重启后 驱动参数配置依然生效。
4、UDP根据源IP和目的IP,端口号的哈希队列优化,默认关闭。
ethtool -N ethX rx-flow-hash udp4 sdfn
查看当前网卡的hash配置:
ethtool -n ethX rx-flow-hash udp4
如果配置成功显示如下内容:
IP SAIP DAL4 bytes 0 & 1 [TCP/UDP src port]L4 bytes 2 & 3 [TCP/UDP dst port]
未配置显示如下:
IP SAIP DA