r3f.cn
GitHub Repo stars

Taskset

taskset 命令用于设置或检索正在运行进程的 CPU 亲和性(给定其 pid),或使用给定的 CPU 亲和性启动新命令。

#入门

#用法

默认行为是使用给定的亲和性掩码运行一个新命令。

$ taskset [掩码] [命令] [参数]

#用法 #2

$ taskset -p [pid]

$ taskset -p [掩码] [pid]

您还可以检索现有任务的 CPU 亲和性。

#常用选项

命令 替代选项 含义
-a --all-tasks 设置或检索给定 PID 的所有任务(线程)的 CPU 亲和性。
-c --cpu-list 将掩码解释为处理器的数字列表,而不是位掩码。
数字用逗号分隔,可以包含范围。例如:0,5,8-11
-p --pid 操作现有 PID,不启动新任务。
-h --help 显示帮助文本并退出。
-v --version 打印版本信息并退出。

#示例

#查看 CPU 亲和性

$ taskset -cp 29523
pid 29523 当前的亲和性列表:0-15

这意味着 PID 为 29523 的进程在 CPU 范围 [0,1,...,15] 上活动,总共 16 个 CPU。

PID:进程标识符 - 是分配给每个正在运行的进程的唯一数字标识符,您可以在 tophtop 工具中查看进程的 PID。

如果您运行上述命令但收到 bad usage 消息,请尝试使用 PID = 1

$ taskset -cp 1

#设置 CPU 亲和性

现在让我们尝试将进程设置到指定的 CPU。例如,我们有一个 PID = 14846 的进程。

首先让我们看看这个进程的 CPU 亲和性列表:

$ taskset -cp 14846
pid 14846 当前的亲和性列表:0-15

#将 CPU 亲和性更改为 1:

$ taskset -cp 1 14846
pid 14846 当前的亲和性列表:0-15
pid 14846 新的亲和性列表:1

如我们所见,CPU 亲和性已更改。

#设置具有多个值的 CPU 亲和性

这意味着新的 CPU 亲和性列表是 [0,1,2,3]

$ taskset -cp 0-3 14846
pid 14846 当前的亲和性列表:1
pid 14846 新的亲和性列表:0-3

您可以使用以下命令设置单个 CPU:

$ taskset -cp 5,8,12 14846
pid 14846 当前的亲和性列表:0-3
pid 14846 新的亲和性列表: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。

#另请参阅