14.4. 個々の IRQ への CPU アフィニティーの手動割り当て
CPU アフィニティーを割り当てると、指定した CPU または CPU の範囲にプロセスとスレッドをバインドおよびバインド解除できます。これにより、キャッシュの問題を減らすことができます。
手順
/proc/interrupts
ファイルを表示して、各デバイスで使用されている IRQ を確認します。# cat /proc/interrupts
各行には、IRQ 番号、各 CPU で発生した割り込みの数、IRQ タイプ、および説明が表示されます。
CPU0 CPU1 0: 26575949 11 IO-APIC-edge timer 1: 14 7 IO-APIC-edge i8042
特定の IRQ の
smp_affinity
エントリーに CPU マスクを書き込みます。CPU マスクは、16 進数で表記する必要があります。たとえば、以下のコマンドは、IRQ 番号 142 が CPU 0 でのみ実行されるように指示します。
# echo 1 > /proc/irq/142/smp_affinity
この変更は、割り込みが発生した場合にのみ有効になります。
検証手順
- 指定の割り込みをトリガーするアクティビティーを実行します。
/proc/interrupts
で変更を確認します。設定された IRQ の指定された CPU の割り込みの数は増加し、指定されたアフィニティー外の CPU で設定された IRQ の割り込みの数は増加しませんでした。