web-dev-qa-db-ja.com

Linuxでのirqbalanceとドロップされたパケット

Linuxを実行しているデュアルコアのクアッドXEONボックスでドロップされたパケットを調査しています。私が見ていることの1つは、システムで実行されているirqbalanceです。いくつか質問があります。ドキュメントを読む ここ それがどのように機能するかは理解していると思いますが、紛らわしいと思われるのはこの行です-「現在のLinux irqbalanceプログラムは設計が数年前であり、幸いにも気づいていません。クアッド(またはデュアル)コアまたは電力使用量のアイデア。プログラムは、スマート割り込みバランサーよりもナイーブバランシングに概念的に近いです。」これは、irqbalanceの新旧バージョンがあることを示しているようです。これは本当ですか?どちらがマシンで実行されているかをどのように判断できますか。

また、バースト中のパケット処理を最適化することが目標である場合、irqbalanceを実行する必要がありますか、それともネットワークカードをCPUのセットに手動でバインドする必要がありますか?

1
Andy F

この問題の解決策の1つは、irqbalanceの無効化、CPU分離、およびNIC割り込みを分離CPUに固定することの組み合わせを使用することです。

  • Irqbalanceを無効にします。これにより、すべての割り込みがCPU0で発生します
  • カーネルブートパラメータ「isolcpus = 1-3」を使用してCPU1〜3を分離します
  • NICの割り込みを分離されたCPUの1つに手動で固定します(echo'cpumask '。/proc/irq // smp_affinity)。

これを行うと、NICは、ランダムなカーネルスレッドや他のハードウェアデバイスからのIRQに煩わされないCPUでIRQを実行できるようになります。

これは、IRQを特定のCPUに固定する方法の良い説明です。

https://cs.uwaterloo.ca/~brecht/servers/apic/SMP-affinity.txt

2
bgoldberg

「現在」とは、そのページが書かれたとき、5年ほど前に一般的だったことを意味します。使用する可能性のある最新のLinuxディストリビューションにはすべて、最新のスマートなirqbalanceがあります。非常に、非常に存在する可能性が低い問題を修正しようとしています。

0
David Schwartz