网卡可以分为多队列网卡和单队列网卡
背景:
linux 早期 不支持网卡多队列机制,因为只能申请一个中断号,导致此网卡的所有中断都由同一cpu处理,无法利用多核心
多队列网卡:
可以通过设置/proc/irq/中断号/smp_affinity来 设置均衡
比如echo 1 > /proc/irq/12/smp_affinity 设置只有cpu0 来处理12中断
echo ffffffff > /proc/irq/12/smp_affinity 设置来均衡此中断到所有cpu上
可以通过 ethtool -l 网卡名(比如eth0)
pre-set maximums 下的 combined后的数字就是最多的队列数
可以通过ethtool -L eth0 combined 2 来设置当前生效的队列数
单队列网卡:
sysctl -w net.core.rps_sock_flow_entries=所有队列的中断数,对于单队列和/sys/class/net/eth0/queues/rx-0/rps_flow_cnt 一样(每个队列的中断数)
/sys/class/net/eth0/queues/rx-0/rps_cpus 设置cpu数