网卡中断优化

(1)  中断的配置

[root@zxinos ~]#/etc/init.d/irq_balancer status

Checking for service irqbalance                                    running

--- /etc/init.d/irq_balancer linux下用于均分软中断的后台服务,在手工分配软中断前需要停止该服务。

[root@zxinos ~]#cat /proc/interrupts

  73:  105588723   84012028    2264178    1534228    1555321    1534136    1555345    1534132   PCI-MSI-edge      eth0

---- 找到eth0对应中断信号为73

[root@zxinos ~]#cat /proc/irq/73/smp_affinity

ff

--- ff表示73号中断可以分配到所有processor上。

echo 03 > /proc/irq/73/smp_affinity

--eth0绑定到CPU0/CPU1

(2)  多队列网卡

在支持多队列网卡的系统,查看/proc/interrupts可以看到同一个网卡支持多个中断:

111:  0 1       0      0      0      0      0      0     0      0 IR-PCI-MSI-edge eth2      

112:  1 0 3426776      0      0      0      0      0     0      0 IR-PCI-MSI-edge eth2-TxRx-0

113:  1 0       0 708047      0      0      0      0     0      0 IR-PCI-MSI-edge eth2-TxRx-1

114:  1 0       0      0 601650      0      0      0     0      0 IR-PCI-MSI-edge eth2-TxRx-2

115:  1 0       0      0      0 755997      0      0     0      0 IR-PCI-MSI-edge eth2-TxRx-3

116:  1 0       0      0      0      0 573019      0     0      0 IR-PCI-MSI-edge eth2-TxRx-4

117:  1 0       0      0      0      0      0 964420     0      0 IR-PCI-MSI-edge eth2-TxRx-5

118:  1 0       0      0      0      0      0      0716379      0 IR-PCI-MSI-edge eth2-TxRx-6

119:  1 0       0      0      0      0      0      0     0 286875 IR-PCI-MSI-edge eth2-TxRx-7

111~119都是eth2网卡的中断号,1个硬中断,8个收发队列中断,这样8个收发队列可以通过smp_affinity配置到不同的cpu核上,让不同核并发处理收发队列数据。

(3)  软件实现多队列

2.6.35 以后的内核版本都支持googleRPS/RFS补丁,需要手工开启。

echo ff > /sys/class/net/eth0/queues/rx-0/rps_cpus

---配置单网卡分配到所有cpu核上。

echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt

配置单个每个虚拟队列支持的流数量,

echo 32768 > /proc/sys/net/core/rps_sock_flow_entries

---配置全局数据流表(rps_sock_flow_table)的总数 = 4096 * 8(8个processor)

你可能感兴趣的:(linux)