精选 Taskset CPU 亲和性与进程绑定 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。
用法 #3:修改现有 PID 的 CPU 亲和性掩码
$ taskset -p [mask] [pid]
您也可以检索查询现有进程任务的 CPU 亲和性配置
| 命令参数 | 替代长选项 | 含义说明 |
|---|---|---|
-a |
--all-tasks | 设置或获取给定 PID 的所有任务 (包含内部全部线程) 的 CPU 亲和性。 |
-c |
--cpu-list | 将掩码解析为数字 CPU 列表而非掩码位图。 数字用逗号分隔并允许包含范围。例如: 0,5,8-11 |
-p |
--pid | 作用于已存在的进程 PID,而不启动新任务。 |
-h |
--help | 显示帮助说明文本并退出。 |
-v |
--version | 输出版本信息并退出。 |
$ taskset -cp 29523
pid 29523's current affinity list: 0-15
这意味着 PID 为 29523 的进程目前在 CPU 编号 [0,1,...,15] 范围内允许运行 (总共使用 16 个逻辑 CPU 核心)。
PID: 进程标识符 (Process Identifier) - 是赋予每个正在运行进程的唯一数字标识,您可以在 top 或 htop 工具中查看进程的 PID。
如果您运行上述命令出现 bad usage 错误提示,请尝试输入 PID = 1 进行测试:
$ taskset -cp 1
现在让我们尝试将进程绑定绑定到指定的 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 亲和性列表被修改为 [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]。
您可以通过组合范围与特定 CPU 核心来进行更复杂的亲和性绑定:
$ taskset -cp 1-3,12 14846
或者使用步长表达式:
$ taskset -cp 1-6:2 14846
后缀 ":N" 指定范围中的步长间隔,例如 0-10:3 会被解析为 0,3,6,9 核心列表。