Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
6.3.7. AMD64 および Intel 64 での割り込み親和性の設定
割り込み要求には関連づけられた親和性プロパティー
smp_affinity
があり、割り込み要求を処理するプロセッサーはこのプロパティーによって指定されます。アプリケーションのパフォーマンスを向上させるには、割り込みの親和性とプロセスの親和性を同じプロセッサーまたは同じコアにあるプロセッサーに割り当てます。これにより、指定された割り込みとアプリケーションスレッドがキャッシュラインを共有できるようになります。
重要
本セクションでは、AMD64 および Intel 64 のアーキテクチャーのみを説明します。割り込み親和性の設定は、他のアーキテクチャーとは大きく異なります。
手順6.1 割り込みの自動分散
- BIOS が NUMA トポロジーをエクスポートする場合、
irqbalance
サービスは、サービスを要求するハードウェアに対してローカルとなるノードの割り込み要求を自動的に処理できます。irqbalance
の設定に関する詳細は、「irqbalance」 を参照してください。
手順6.2 割り込みの手動分散
- 設定する割り込み要求に対応するデバイスを確認します。Red Hat Enterprise Linux 7.5 より、システムが最適な割り込み親和性を特定のデバイスおよびそれらのドライバーに自動的に設定するようになりました。親和性を手動で設定する必要はありません。これは以下のデバイスを対象とします。
be2iscsi
ドライバーを使用したデバイス。- NVMe PCI デバイス。
- プラットフォームのハードウェア仕様を見つけます。システムのチップセットが割り込みの分散に対応しているかどうかを確認します。
- その場合には、以下の手順に従って割り込み配信を設定できます。また、チップセットが割り込みの分散に使用するアルゴリズムを確認してください。BIOS によっては割り込み配信を設定するオプションがあります。
- そうでない場合、チップセットは常にすべての割り込みを 1 つの静的な CPU にルーティングします。使用される CPU を設定することはできません。
- システムで、どの APIC (Advanced thumbnailer Interrupt Controller) モードが使用されているかを確認します。物理以外のフラットモード (
flat
) のみが、複数の CPU への割り込みの分散をサポートします。このモードは、CPU が最大 8 のシステムでのみ利用できます。$
journalctl --dmesg | grep APICコマンド出力で、以下を行います。- システムが
flat
以外のモードを使用している場合は、Setting APIC routing to physical flat
と同様の行が表示されます。 - このようなメッセージが表示されない場合は、システムが
flat
モードを使用します。
システムがx2apic
モードを使用する場合は、ブートローダー設定のカーネルコマンドラインにnox2apic
オプションを追加してこれを無効にできます。 smp_affinity
マスクを計算します。smp_affinity
の値は、システム内のすべてのプロセッサーを表す 16 進数のビットマスクとして保存されます。各ビットは異なる CPU を設定します。最も大きなビットは CPU 0 です。マスクのデフォルト値はf
で、割り込み要求がシステムのどのプロセッサーでも処理可能であることを意味します。この値を1
に設定すると割り込み要求を処理できるのはプロセッサー 0 のみになります。手順6.3 マスクの計算
- バイナリーでは、割り込みを処理する CPU に
1
の値を使用します。たとえば、CPU 0 および CPU 7 で割り込みを処理するには、0000000010000001
をバイナリーコードとして使用します。表6.1 CPU のバイナリービット
CPU 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 バイナリー 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 - バイナリーコードを 16 進数に変換します。たとえば、Python を使用してバイナリーコードを変換するには、次のコマンドを実行します。
>>>
hex(int('0000000010000001', 2)) '0x81'
プロセッサーが 32 個以上搭載されているシステムでは 32 ビットグループそれぞれにsmp_affinity
値を区切って設定する必要があります。たとえば、64 プロセッサーシステムの最初の 32 プロセッサーのみが割り込み要求を処理できるようにするには、0xffffffff,00000000
を使用します。smp_affinity
マスクを設定します。特定の割り込み要求の割り込み親和性の値は該当の/proc/irq/irq_number/smp_affinity
ファイルに格納されます。計算されたマスクを関連ファイルに書き込みます。# echo mask > /proc/irq/irq_number/smp_affinity
関連情報
- 割り込みステアリングに対応するシステムでは、割り込み要求の
smp_affinity
プロパティーを変更するとハードウェアが設定され、カーネルを介入することなくハードウェアレベルで特定のプロセッサーに割り込みを処理させる決定が行われるようになります。割り込みステアリングについては、9章ネットワーク を参照してください。