31.4. 割り込み要求の概要
割り込み要求または IRQ は、ハードウェアの一部からプロセッサーに直ちに送信されるシグナルです。システム内の各デバイスには、固有の割り込みを送信できる IRQ 番号が割り当てられます。割り込みが有効になっていると、割り込み要求を受信するプロセッサーは割り込み要求に対応するために現在のアプリケーションスレッドの実行を即時に一時停止します。
割り込みは通常の動作を停止するため、割り込み率が高くなると、システムのパフォーマンスが大幅に低下する可能性があります。割り込みの親和性を設定するか、優先度の低い割り込みをバッチ (複数の割り込みをまとめる) に送信することで、割り込みにかかる時間を低減することができます。
割り込み要求には関連するアフィニティープロパティー smp_affinity があり、割り込み要求を処理するプロセッサーを定義します。アプリケーションのパフォーマンスを向上させるには、割り込みの親和性とプロセスの親和性を同じプロセッサーまたは同じコアにあるプロセッサーに割り当てます。これにより、指定された割り込みとアプリケーションスレッドがキャッシュラインを共有できるようになります。
割り込みステアリングに対応するシステムでは、割り込み要求の smp_affinity プロパティーを変更するとハードウェアが設定され、カーネルを介入することなくハードウェアレベルで特定のプロセッサーに割り込みを処理させる決定が行われるようになります。
31.4.1. 割り込みの手動分散 リンクのコピーリンクがクリップボードにコピーされました!
BIOS が NUMA トポロジーをエクスポートする場合、irqbalance サービスは、サービスを要求するハードウェアに対してローカルとなるノードで割り込み要求を自動的に処理できます。
手順
- 設定する割り込み要求に対応するデバイスを確認します。
プラットフォームのハードウェア仕様を見つけます。システムのチップセットが割り込みの分散に対応しているかどうかを確認します。
- その場合には、以下の手順に従って割り込み配信を設定できます。また、チップセットが割り込みの分散に使用するアルゴリズムを確認してください。BIOS によっては割り込み配信を設定するオプションがあります。
- そうでない場合は、チップセットは常にすべての割り込みを単一の静的 CPU にルーティングします。使用される CPU を設定することはできません。
システムでどの Advanced Programmable Interrupt Controller (APIC) モードが使用されているかを確認します。
$ journalctl --dmesg | grep APICここでは、以下のようになります。
-
システムが
flat以外のモードを使用している場合は、APIC ルーティングの物理フラットへの設定と同様の行が表示されます。 このようなメッセージが表示されない場合は、システムが
flatモードを使用します。システムで
x2apicモードを使用している場合は、bootloader設定のカーネルコマンドラインにnox2apicオプションを追加して無効にできます。物理以外のフラットモード (
flat) のみが、複数の CPU への割り込みの分散をサポートします。このモードは、CPU が最大8のシステムでのみ利用できます。
-
システムが
-
smp_affinity マスクを計算します。smp_affinity マスクの計算方法の詳細は、smp_affinity マスクの設定を 参照してください。