IPTablesはマルチコアプロセッサを利用していますか?


10

各パケットは異なるコアで処理されますか?それともシングルスレッドプロセスですか?


2
Chopper3がこの質問を閉じた理由はわかりません。しかしそれに答えるために:Iptablesは実際にはLinuxファイアウォールのネットスペースであるユーザースペースフロントエンドにすぎません。Netfilterは実際には、パケット処理に関するカーネル内のフックのシステムです。各パケットは、割り込みをトリガーすることによってカーネルによって処理されます。カーネルが複数のCPU間で割り込みのバランスをとるかどうかは、カーネルの古さに依存します。StackOverflowでこのスレッドを参照してください。stackoverflow.com/questions/7467688/...
JakePaulus

+1、それは本物の質問だと思うので。
Sachin Divekar

@JakePaulusこのIRQバランスは、1つの割り込みに複数のコアを割り当てることはありません。それで、単一ライン上の各パケットのコアの切り替えは決して行われませんか?
Nils

CPUメモリキャッシュの観点から見ると、単一の接続でコアを切り替えることはあまり意味がありません。これらのコアが同じキャッシュを共有していない場合は、おそらく速度が遅くなることさえあります。しかし、なぜあなたはこの質問をするのですか?
Nils

@Nilsインターフェイスによって生成された割り込みは、別の、ビジーでないCPUにリダイレクトされる可能性があります。また、複数のインターフェイスが割り込みを異なるCPUに送信して、負荷を分散させることもできます。単一のインターフェイスからのトラフィックが、パケットごとにCPU間でバランスが取れていないことについては、あなたは正しいと思います。
JakePaulus 2011年

回答:


6

Iptablesは、実際にはLinuxファイアウォールのユーザー空間フロントエンドであり、netfilterです。Netfilterは実際には、パケット処理に関するカーネル内のフックのシステムです。各パケットは、割り込みをトリガーすることによってカーネルによって処理されます。カーネルが複数のCPU間で割り込みのバランスをとるかどうかは、カーネルの古さに依存します。StackOverflowでこのスレッドを参照してください。/programming/7467688/netfilter-hooks-on-multi-core-system

Nilsが述べたように、これらの割り込みはパケットごとにバランスが取れていません。IRQごと(インターフェイスごと)にバランスを取るか、ビジー状態になりすぎた場合は別のCPUにまとめて移動します。


または、割り込みを抑制したり、割り込みを別のコアに割り当てたりすることもできます。私はいくつかのケースで、すべてのネットワーク割り込みをいくつかのコアに限定して、コア間のパケットの並べ替えとプロセスの移行を最小限に抑えていることを確認しました。
チャンダンク2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.