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 コマンド |
| 複数CPU | taskset -c 0,1 コマンド |
| 範囲指定 | taskset -c 0-3 コマンド |
| 既存プロセス変更 | taskset -cp CPU PID |
■ おすすめ読者
- Ubuntuサーバー管理者
- パフォーマンス検証をする人
- VPS利用者
- Pythonバッチ運用者
CPU指定はサーバー運用ではよく使われるテクニックです。
仕組みを理解すれば怖くありません 😊
ぜひ試してみてください!

コメント