14.4. 個々の IRQ への CPU アフィニティーの手動割り当て

CPU アフィニティーを割り当てると、指定した CPU または CPU の範囲にプロセスとスレッドをバインドおよびバインド解除できます。これにより、キャッシュの問題を減らすことができます。

手順

  1. /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
  2. 特定の IRQ の smp_affinity エントリーに CPU マスクを書き込みます。CPU マスクは、16 進数で表記する必要があります。

    たとえば、以下のコマンドは、IRQ 番号 142 が CPU 0 でのみ実行されるように指示します。

    # echo 1 > /proc/irq/142/smp_affinity

    この変更は、割り込みが発生した場合にのみ有効になります。

検証手順

  1. 指定の割り込みをトリガーするアクティビティーを実行します。
  2. /proc/interrupts で変更を確認します。

    設定された IRQ の指定された CPU の割り込みの数は増加し、指定されたアフィニティー外の CPU で設定された IRQ の割り込みの数は増加しませんでした。