使用taskset命令讓進程運行在指定CPU上
更新時間 2023-09-01 16:59:23
最近更新時間: 2023-09-01 16:59:23
分享文章
本文為您介紹使用taskset命令讓進程運行在指定CPU上的具體操作。
操作描述
taskset命令可用于在Linux系統上查看或設定某個進程或線程的CPU親和性。使用此命令可實現讓云主機內的某個進程或線程僅在與之綁定的CPU核心上運行。此操作指導將以CtyunOS 3-23.01 64位操作系統為例,介紹如何使用 taskset 命令讓進程運行在指定CPU上。
操作步驟
-
通過執行如下命令,查看云主機的 CPU 核數。
cat /proc/cpuinfo您會看到類似下圖的輸出內容。

其中,“processor”參數表示對應CPU處理器標號,而“cpu cores”參數表示對應CPU處理器的核心數。上圖示例展示了標號為1且核心數為1的CPU處理器。注意:從此圖可判斷此云主機至少有2個CPU處理器,因為CPU處理器標號是從0開始的,了解這個信息對后續步驟的執行很關鍵。
-
假設有一個 taskset_test.sh 進程,通過執行如下命令,查看該進程的信息。
ps aux | grep taskset_test.sh
上圖示例中 taskset_test.sh 進程的 PID 是 3943。
-
通過執行如下命令,查看指定進程的 CPU 親和性。
taskset -p <替換為 PID>以第 2 步中獲取的 PID 為例:

上圖示例中顯示的十進制數字3轉換為二進制數字11,每個1對應一個CPU,最低兩個是1表示該進程運行在兩個CPU上。
-
通過執行如下命令,設定指定進程運行在第1個CPU(CPU0)上。
taskset -pc 0 <替換為 PID>以第 2 步中獲取的 PID 為例:

可以重復第 3 步來對比變化:

上圖示例中顯示的十進制數字1轉換為二進制數字01(與第 3 步中對應),最低一個是1表示此步設定成功。
此外,仍以設定運行在第 1 個 CPU 上為例,可使用如下命令在啟動程序時綁定 CPU 核心:
taskset -c 0 bash taskset_test.sh