
网站建设全包:这个根据网卡型号和驱动版本的不同可能会发生变化
在高吞吐高负载的应用中,小文件对网卡和CPU的压力经常导致int偏高。针对Intel
多队列网卡,可以通过绑定队列到CPU中断的方式让中断分布平均化。
检查网卡是否是多队列网卡的办法如下。
这个根据网卡型号和驱动版本的不同可能会发生变化。所以我们还可以从Linux层面
来检查。
cat
31:
32:
33:
34:
35:
36:
37:
38:
39:
/proc/interrupts I grep eth :'
1 0 0; :: ' 0 PCI-MSI-edge eth0
496264 4285038723 183045979 4261001431 PCI-MSI-edge ethO-rx-0
616597 4286889728 181983908 4266611362 PCI-MSI-edge ethO-rx-l
637105 7676528 195087860 4176934847 PCI-MSI-edge ethO-rx-2
664370 4176592309 193372878 17962407 PCI-MSI-edge ethO-rx-3
2516359 2221308809 1586839592 2231100173 PCI-MSI-edge ethO-tx-0
1385780 3204456867 173337759 3199154048 PCI-MSI-edge ethO-tx-l
2148360 2106264051 1707846633 2131107094 PCI-MSI-edge ethO-tx-2
2435577 2214043654 1571130355 2262530323 PCI-MSI-edge ethO-tx-3
默认情况下,Linux也会将中断散布在各个CPU上以提供更高的性能,但是同一个队
绑定中断到每个CPU核的脚本,最早是由Linux内核network子系统的开发者David
脚本内容很简单,原理就是从上例提到的/proc/interrupts中取出中断的MASK,然后
set_affinity ( )
if [ $VEC -ge 32 ]
then
MASK_FILL-''''
MASK_ZERO="OOOOOOOO"
let 'IDX = $VEC / 32" : :
do
MASK FILL="$ {MASK_FILL } , $ { MASK ZERO } "
done