Linuxを実行しているデュアルコアのクアッドXEONボックスでドロップされたパケットを調査しています。私が見ていることの1つは、システムで実行されているirqbalanceです。いくつか質問があります。ドキュメントを読む ここ それがどのように機能するかは理解していると思いますが、紛らわしいと思われるのはこの行です-「現在のLinux irqbalanceプログラムは設計が数年前であり、幸いにも気づいていません。クアッド(またはデュアル)コアまたは電力使用量のアイデア。プログラムは、スマート割り込みバランサーよりもナイーブバランシングに概念的に近いです。」これは、irqbalanceの新旧バージョンがあることを示しているようです。これは本当ですか?どちらがマシンで実行されているかをどのように判断できますか。
また、バースト中のパケット処理を最適化することが目標である場合、irqbalanceを実行する必要がありますか、それともネットワークカードをCPUのセットに手動でバインドする必要がありますか?
この問題の解決策の1つは、irqbalanceの無効化、CPU分離、およびNIC割り込みを分離CPUに固定することの組み合わせを使用することです。
これを行うと、NICは、ランダムなカーネルスレッドや他のハードウェアデバイスからのIRQに煩わされないCPUでIRQを実行できるようになります。
これは、IRQを特定のCPUに固定する方法の良い説明です。
https://cs.uwaterloo.ca/~brecht/servers/apic/SMP-affinity.txt
「現在」とは、そのページが書かれたとき、5年ほど前に一般的だったことを意味します。使用する可能性のある最新のLinuxディストリビューションにはすべて、最新のスマートなirqbalanceがあります。非常に、非常に存在する可能性が低い問題を修正しようとしています。