14.5. taskset ユーティリティーを使用したプロセスの CPU へのバインド
taskset
ユーティリティーは、タスクのプロセス ID (PID) を使用して、その CPU アフィニティーを表示または設定します。このユーティリティーを使用して、選択した CPU アフィニティーでコマンドを実行できます。
アフィニティーを設定するには、CPU マスクを 10 進数または 16 進数にする必要があります。mask 引数は、変更されるコマンドまたは PID に対して有効な CPU コアを指定する bitmask
です。
taskset`
ユーティリティーは NUMA (Non-Uniform Memory Access) システムで動作しますが、ユーザーが CPU および最も近い NUMA メモリーノードにスレッドをバインドすることはできません。このようなシステムでは、taskset は推奨されるツールではなく、その高度な機能を使用するには、代わりに numactl
ユーティリティーを使用する必要があります。
詳細は、numactl(8)
の man ページを参照してください。
手順
必要なオプションおよび引数を指定して
taskset
を実行します。CPU マスクの代わりに -c パラメーターを使用して CPU リストを指定できます。この例では、
my_embedded_process
は、CPU 0、4、7 - 11 でのみ実行するように指示されています。# taskset -c 0,4,7-11 /usr/local/bin/my_embedded_process
ほとんどの場合、この呼び出しは便利です。
現在実行されていないプロセスのアフィニティーを設定するには、
taskset
を使用して、CPU マスクとプロセスを指定します。この例では、
my_embedded_process
は、CPU 3 のみを使用するように指示されています (CPU マスクの 10 進数バージョンを使用)。# taskset 8 /usr/local/bin/my_embedded_process
ビットマスクで複数の CPU を指定できます。この例では、
my_embedded_process
は、プロセッサー 4、5、6、および 7 で実行するように指示されています (CPU マスクの 16 進数バージョンを使用)。# taskset 0xF0 /usr/local/bin/my_embedded_process
変更するプロセスの CPU マスクと PID を指定して、
-p
(--pid
) オプションを使用することにより、すでに実行されているプロセスの CPU アフィニティーを設定できます。この例では、PID が 7013 のプロセスは CPU 0 でのみ実行するように指示されています。# taskset -p 1 7013
リスト表示されているオプションを組み合わせることができます。
関連情報
-
taskset(1)
の man ページ -
numactl(8)
の man ページ