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 ページ