
網(wǎng)站建設(shè)全包:這個根據(jù)網(wǎng)卡型號和驅(qū)動版本的不同可能會發(fā)生變化
在高吞吐高負載的應(yīng)用中,小文件對網(wǎng)卡和CPU的壓力經(jīng)常導致int偏高。針對Intel
多隊列網(wǎng)卡,可以通過綁定隊列到CPU中斷的方式讓中斷分布平均化。
檢查網(wǎng)卡是否是多隊列網(wǎng)卡的辦法如下。
這個根據(jù)網(wǎng)卡型號和驅(qū)動版本的不同可能會發(fā)生變化。所以我們還可以從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內(nèi)核network子系統(tǒng)的開發(fā)者David
腳本內(nèi)容很簡單,原理就是從上例提到的/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