【Ubuntu22】利用するCPUを指定してアプリを起動する方法(tasksetの使い方)

Ubuntuでアプリを動かしていると、

  • 特定のCPUだけを使わせたい
  • 他の処理に影響を出したくない
  • パフォーマンス検証をしたい

といった場面があります。

そんなときに使うのが CPUアフィニティ(CPU affinity) です。

今回は初心者向けにわかりやすく解説します 👍


■ CPUを指定して実行するとは?

通常、Linuxは自動的に空いているCPUコアへ処理を振り分けます。

しかし、特定のコアに固定することもできます。

例えば:

  • CPU0だけ使わせる
  • CPU1とCPU2だけ使わせる

といった指定が可能です。


■ 使用するコマンド:taskset

CPUを指定して実行するには taskset コマンドを使います。


■ まずはCPU数を確認

nproc

または

lscpu

これで利用可能なCPUコア数が分かります。

※CPU番号は「0」から始まります。


■ 基本構文

taskset -c CPU番号 実行コマンド

例①:CPU0だけを使って起動する

taskset -c 0 python3 test.py

これでCPU0のみを使用します。


例②:複数CPUを指定する

taskset -c 0,1 python3 test.py

CPU0とCPU1を使用します。


例③:範囲指定

taskset -c 0-3 python3 test.py

CPU0〜CPU3を使用します。


■ すでに動いているプロセスに適用する

まずPIDを確認:

ps aux | grep test.py

次にCPUを指定:

taskset -cp 0 12345

※12345はPID


■ 現在のCPU設定を確認する

taskset -p 12345

■ バックグラウンド実行と組み合わせる

前回の記事の内容と組み合わせることもできます。

nohup taskset -c 0 python3 test.py > output.log 2>&1 &

これで:

  • CPU0固定
  • ログ保存
  • バックグラウンド実行
  • ログアウトしても継続

が可能になります 👍


■ こんなときに便利

  • 検証環境でCPU負荷を分けたい
  • サーバーで他サービスに影響を出したくない
  • マルチコア性能を測定したい

■ 注意点

CPUを固定すると、

  • 他のコアが空いていても使われない
  • パフォーマンスが落ちる場合がある

用途を理解した上で使いましょう。


■ まとめ

やりたいことコマンド
CPU0で実行taskset -c 0 コマンド
複数CPUtaskset -c 0,1 コマンド
範囲指定taskset -c 0-3 コマンド
既存プロセス変更taskset -cp CPU PID

■ おすすめ読者

  • Ubuntuサーバー管理者
  • パフォーマンス検証をする人
  • VPS利用者
  • Pythonバッチ運用者

CPU指定はサーバー運用ではよく使われるテクニックです。

仕組みを理解すれば怖くありません 😊
ぜひ試してみてください!

コメント

タイトルとURLをコピーしました