31.4.2. smp_affinity マスクの設定
smp_affinity の値は、システム内のすべてのプロセッサーを表す 16 進数のビットマスクとして保存されます。各ビットは異なる CPU を設定します。最も大きなビットは CPU 0 です。
マスクのデフォルト値は f で、割り込み要求をシステム内のどのプロセッサーでも処理できることを意味します。この値を 1 に設定すると、プロセッサー 0 のみが割り込みを処理できます。
手順
バイナリーでは、割り込みを処理する CPU に 1 の値を使用します。たとえば、割り込みを処理する CPU 0 と CPU 7 を設定するには、バイナリーコードに
0000000010000001を使用します。Expand 表31.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を使用します。特定の割り込み要求の割り込みアフィニティー値は、関連付けられた
/proc/irq/irq_number/smp_affinityファイルに保存されます。このファイルでsmp_affinityマスクを設定します。# echo mask > /proc/irq/irq_number/smp_affinity