tunaコマンド

デバイスがどのCPUに割り込みのリクエストを出すのかを調整するためにはaffinity設定を利用し実現します。

affinityの設定は/proc/irq配下のそれぞれのirq番号配下のsmp_affinityの値を16進数で修正しなくてはいけません。
マルチキューを持つネットワークインターフェースであればそれぞれ割り当てられているIRQ番号で設定を行っていく必要があります。
たとえばecho ffffff > /proc/irq/70/smp_affinityといった感じで設定します。
参考:マルチキューネットワークインターフェース

これを簡単に行ってくれるtunaというツールがredhatより提供されているのをつい先日知りましたので共有します。
guiからでもcliからでも利用が可能なツールです。

兎にも角にも使ってみます。

まずはインストール※centos6のupdatesレポジトリに含まれていました。

CPUが24スレッドの環境において下記のような16進数の設定になっています。
aaaaaaは1,3,5,7,9,11,13,15,17,19,21,23のCPUを利用し、
555555は0,2,4,6,8,10,12,14,16,18,20,22のCPUを利用されることになります。

この値を変更する場合は

これでp1p1のネットワークインターフェースですべてのCPUを利用することになります。

コマンドで確認してみます。

ffffffとなり設定が変更されたことがわかると思います。

注意点としてはirqbalanceで上書きされないように留意しなくてはいけないところですかね。

tuna –show_threadsとすると、たとえばnginxがどのCPUに割り込み要求を出すのかも分かりますので、
意図的にnginxの割り込み先のCPUを制御したいときなんかにも使えると思います。

うち例だとこんな感じでthreadsが表示されます。


PAGE TOP