20.4. 個々の IRQ への CPU アフィニティーの手動割り当て
CPU アフィニティーを使用すると、プロセスやスレッドを特定の CPU または CPU 範囲にバインドしたり、バインドを解除したりできます。これにより、キャッシュの問題を減らすことができます。
前提条件
- システムの root 権限がある。
手順
/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 の割り込みの数は増加しませんでした。