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 -c 0,4,7-11 /usr/local/bin/my_embedded_processCopy to Clipboard Copied! Toggle word wrap Toggle overflow ほとんどの場合、この呼び出しは便利です。
現在実行されていないプロセスのアフィニティーを設定するには、
tasksetを使用して、CPU マスクとプロセスを指定します。この例では、
my_embedded_processは、CPU 3 のみを使用するように指示されています (CPU マスクの 10 進数バージョンを使用)。taskset 8 /usr/local/bin/my_embedded_process
# taskset 8 /usr/local/bin/my_embedded_processCopy to Clipboard Copied! Toggle word wrap Toggle overflow ビットマスクで複数の CPU を指定できます。この例では、
my_embedded_processは、プロセッサー 4、5、6、および 7 で実行するように指示されています (CPU マスクの 16 進数バージョンを使用)。taskset 0xF0 /usr/local/bin/my_embedded_process
# taskset 0xF0 /usr/local/bin/my_embedded_processCopy to Clipboard Copied! Toggle word wrap Toggle overflow 変更するプロセスの CPU マスクと PID を指定して、
-p(--pid) オプションを使用することにより、すでに実行されているプロセスの CPU アフィニティーを設定できます。この例では、PID が 7013 のプロセスは CPU 0 でのみ実行するように指示されています。taskset -p 1 7013
# taskset -p 1 7013Copy to Clipboard Copied! Toggle word wrap Toggle overflow
リスト表示されているオプションを組み合わせることができます。