cpu软中断不均衡的问题

首先确认是否为网卡引起的

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 。

你可能感兴趣的:(cpu软中断不均衡的问题)