itLinkedInPocketCopy周辺ハードウェアはCPUに処理して欲しい出来事があるとCPUに割り込みをかけて処理してもらいます。ネットワークインターフェースカード(NIC)にパケットが到着した時などです。パケットが到着するごとにCPUに割り込みが入ると効率が悪いので、ここでは割愛しますが現在のLinuxには割り込みを緩やかにする仕組みがあります。デフォルトではこの割り込み処理は先頭のCPUが受け持つ事になるので、トラフィックが多いサーバ等では先頭のCPUだけ負荷が高くなることがあります。IRQごとに担当CPUを割り当てることによって、複数NICを搭載した環境では複数のCPUに負荷を分散することができます。割り込み数の確認方法procファイルシステムのinterruptsを見ると現在の割り込み数の統計を確認することができます。event上は現在の私の自宅サーバのinterruptsを表示したものになります。IRQ24と25がeth0と1ということが分かると思います。Threadingを有効にしてあるのでそう見えているだけです。Threadingに分散することはできませんが、2コア以上の環境であればそれぞれのIRQの割り込み処理を別々のCPUに割り当てて負荷を分散することが可能です。割り込みを処理するCPUの割り当て現在のCPU割り当ての設定はprocファイルシステムのsmp_affinityを読み出す事で確認できます。/proc/irq/24/smp_affinity1smp_affinityはビットごとのフラグになっており、下位ビットから順番に1ビット目が1番目のCPU、2ビット目が2番目のCPU、・・・と対応しています。3番目のCPUは2進数で100の4、4番目のCPUは2進数で1000の8となることに注意して下さい。以下のようにIRQごとに処理するCPUを割り当てることができます。>/proc/irq/25/smp_affinityまとめ物理的に複数のNICとCPUを搭載したマシンで、システムの負荷が1つのCPUに偏っている場合は状況をみて適切に設定してあげるとシステム全体のパフォーマンスが改善する事があります。Steering)といった負荷分散の仕組みがあります。これらについてはまた別の機会に解説していこうかと思いますので、今後ともこのアカスブログを宜しくお願い致します。...このアカスブログは全てリンクフリーです。無断リンクして頂いて全く問題ございません。(※転載は禁止)相互リンク希望の方は「お問合せ」かTwitterのDMにご連絡ください。