GNU/Linux >> Linux の 問題 >  >> Linux

マルチコアシステムの Netfilter フック

問題は netfilter によるものではなく、カーネルが割り込みを管理する方法です。

デフォルトでは、古いバージョンの APIC はすべての割り込みを CPU0 に配信します。

これが問題かどうかを確認するには:

cat /proc/interrupts

NIC の割り込み (および netfilter フックが RX または TX SoftIRQ で実行されることを思い出してください) が単一のコアによって処理されるかどうかを確認できます。

カーネルの新しいバージョンには、コンパイル オプション (CONFIG_HOTPLUG_CPU) があり、既存のコアに対して IRQ のバランスをとります。

または、バージョンを更新したり、カーネルを再コンパイルしたりできない場合は、SMP アフィニティを (CPUid よりも多くを処理するマスクを使用して) 更新して、異なるコア間のバランスを取ることができます。または、ACPI と適切な構成に進みます (ここではこれ以上お手伝いできません)。

ここでは、このことに関するすべてを見つけることができます (SMP アフィニティと適切な IRQ 処理)


問題は、NIC の割り込みが 1 つしかないことです。一部の新しい NIC には複数の割り込み (いわゆるマルチキュー NIC) があり、多くのスレッド間で負荷を分散できます。

単一キュー NIC の場合、新しいカーネルで使用できるいくつかのソフトウェア機能があり、負荷を分散するように構成できます。例を参照してください。利用可能なものの概要については、http://www.spinics.net/lists/linux-doc/msg02975.html を参照してください。


Linux
  1. Beaglebone での割り込み

  2. x =os.system(..) の戻り値

  3. 時間の一時変更

  1. システムログNG

  2. Thundering Herd Problem は Linux にもう存在しませんか?

  3. UTS 名前空間とは何ですか?

  1. Ubuntuで検出されたシステムプログラムの問題を修正する方法

  2. Linuxファイルシステムの概要

  3. クロスプラットフォーム ファイル システム