首先确认是否为网卡引起的
cat /proc/interrupts
然后确认网卡是否支持多队列
lscpi -vvv
找到Ethernet controller项,如果有MSI-X,Enable+ 并且Count>1,表示该网卡支持多队列,否则不支持
接着确认一下网卡的中断号,因为是单队列,所以只有一个中断号 19:
grep eth /proc/interrupts | awk '{print $1, $NF}'
知道了网卡的中断号,就可以查询其中断亲缘性配置「smp_affinity」:
cat /proc/irq/19/smp_affinity
02
这里的 02 实际上是十六进制,表示 1 号CPU,计算方法如下
首先看看如何配置RPS,如果CPU个数是 8 个的话,可以设置成 ff,如果是4CPU个数是4个的话,可以设置f:
echo f > /sys/class/net/eth1/queues/rx-0/rps_cpus
接着配置内核参数rps_sock_flow_entries(官方文档推荐设置: 32768):
sysctl net.core.rps_sock_flow_entries=32768
最后配置rps_flow_cnt,单队列网卡的话设置成rps_sock_flow_entries即可:
echo 32768 > /sys/class/net/eth1/queues/rx-0/rps_flow_cnt
说明:如果是多队列网卡,那么就按照队列数量设置成 rps_sock_flow_entries / N 。
网友评论