操作描述
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