Taskset CPU 亲和性与进程绑定

精选 Taskset CPU 亲和性与进程绑定 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。

用法 #3:修改现有 PID 的 CPU 亲和性掩码

$ taskset -p [mask] [pid]

您也可以检索查询现有进程任务的 CPU 亲和性配置

#常用选项参数 (Common Options)

命令参数 替代长选项 含义说明
-a --all-tasks 设置或获取给定 PID 的所有任务 (包含内部全部线程) 的 CPU 亲和性。
-c --cpu-list 将掩码解析为数字 CPU 列表而非掩码位图。
数字用逗号分隔并允许包含范围。例如:0,5,8-11
-p --pid 作用于已存在的进程 PID,而不启动新任务。
-h --help 显示帮助说明文本并退出。
-v --version 输出版本信息并退出。

#实用示例 (Example)

#查看进程 CPU 亲和性 (View CPU Affinity)

$ taskset -cp 29523
pid 29523's current affinity list: 0-15

这意味着 PID 为 29523 的进程目前在 CPU 编号 [0,1,...,15] 范围内允许运行 (总共使用 16 个逻辑 CPU 核心)。

PID: 进程标识符 (Process Identifier) - 是赋予每个正在运行进程的唯一数字标识,您可以在 tophtop 工具中查看进程的 PID。

如果您运行上述命令出现 bad usage 错误提示,请尝试输入 PID = 1 进行测试:

$ taskset -cp 1

#设置进程 CPU 亲和性 (Set CPU Affinity)

现在让我们尝试将进程绑定绑定到指定的 CPU 核心。假设我们有一个 PID = 14846 的进程。

首先查看该进程当前的 CPU 亲和性列表:

$ taskset -cp 14846
pid 14846's current affinity list: 0-15

将 CPU 亲和性修改绑定到 1 号核心:

$ taskset -cp 1 14846
pid 14846's current affinity list: 0-15
pid 14846's new affinity list: 1

正如我们所见,该进程的 CPU 绑定已被成功修改。

#绑定多个 CPU 核心 (Set CPU Affinity with multiple value)

这意味着新的 CPU 亲和性列表被修改为 [0,1,2,3]

$ taskset -cp 0-3 14846
pid 14846's current affinity list: 1
pid 14846's new affinity list: 0-3

您也可以使用以下命令指定多个不连续的单独 CPU 核心:

$ taskset -cp 5,8,12 14846
pid 14846's current affinity list: 0-3
pid 14846's new affinity list: 5,8,12

这意味着新的 CPU 亲和性绑定列表为 [5,8,12]

#其它进阶用法 (Other)

您可以通过组合范围与特定 CPU 核心来进行更复杂的亲和性绑定:

$ taskset -cp 1-3,12 14846

或者使用步长表达式:

$ taskset -cp 1-6:2 14846

后缀 ":N" 指定范围中的步长间隔,例如 0-10:3 会被解析为 0,3,6,9 核心列表。

#🔗 参考资源