23.7. smp_affinity マスクの設定
smp_affinity の値は、システム内のすべてのプロセッサーを表す 16 進数のビットマスクとして保存されます。各ビットは異なる CPU を設定します。最も大きなビットは CPU 0 です。マスクのデフォルト値は f で、割り込み要求をシステム内のどのプロセッサーでも処理できることを意味します。この値を 1 に設定すると、割り込み要求を処理できるのがプロセッサー 0 だけになります。
手順
バイナリーで、割り込みを処理する CPU に値
1を使用します。たとえば、CPU0と CPU7が割り込みを処理するように設定するには、バイナリーコードとして0000000010000001を使用します。Expand 表23.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