マルチキューネットワークインターフェース②

 

前回の記事でBroadcomのnicでは分散ができないのではないかとお伝えしましたが、

解決方法が見つかりましたのでご連絡します。

設定前の/proc/interruptsです。

interrupts

em1はcpu0に偏っています。

p6p1は問題なく分散されています。

早速設定してみます。

IRQごとに利用できるCPUを指定してあげると分散するようになるようです。

コマンドはこちらです。108、109、110、111は/proc/interruptsを見れば確認できます。

echo 1 > /proc/irq/108/smp_affinity
echo 2 > /proc/irq/109/smp_affinity
echo 4 > /proc/irq/110/smp_affinity
echo 8 > /proc/irq/111/smp_affinity

cpuの番号はこのように指定します。
参考ページ:https://cs.uwaterloo.ca/~brecht/servers/apic/SMP-affinity.txt

              Binary         Hex 
    CPU 0    00000001         1 
    CPU 1    00000010         2
    CPU 2    00000100         4
    CPU 3    00001000         8
    CPU 0    00010000         10 
    CPU 5    00100000         20
    CPU 6    01000000         40
    CPU 7    10000000         80

このコマンド入力後、memslapで負荷をかけてみた結果が以下です。

broadcomkaizen

分散ができるようになったようです。

これでintelでもbroadcomでもコントロール可能となりました。

あとは起動時に読み込まれるように下記で設定しておきます。
※smp_affinityは/proc/sys以外のディレクトリで管理されているのでsysctl.confでは設定はできないようです。

vi /etc/rc.d/rc.local

いずれにしても多くのコアを搭載するようになった現在、キューも多く割り当てられているほうが分散させるにはよさそうです。

hardware, linux

Posted by Akira


PAGE TOP