Linux 允许使用以下命令为正在运行的进程(即具有 pid)分配处理器核心:
taskset -pc core pid
这假设进程已在运行,并且其 pid 可用,并且我们更改分配给它的核心。因此,在上下文切换或分时共享期间,进程下次离开 CPU 时,核心将被切换。
但是,是否可以在流程运行时预先分配核心?据我所知,答案是否定的,但我只是想向专家确认一下,以防万一我遗漏了什么。
(我曾在 stackoverflow/69250190 上问过这个问题,但有人建议我在这里发布这个问题。)
答案1
要在进程运行时分配核心,必须使用 taskset 命令:
taskset [options] core-mask command [argument...]
CPU 亲和性以位掩码表示,其中最低位对应第一个逻辑 CPU,最高位对应最后一个逻辑 CPU。
例如,以下命令启动在前两个核心上运行的命令:
taskset 03 sshd -b 1024
也可以使用以下-c
参数将核心指定为列表:
-c, --cpu-list
Interpret mask as numerical list of processors instead of a
bitmask. Numbers are separated by commas and may include
ranges. For example: 0,5,8-11.
答案2
概要 任务集 [选项] 掩码命令 [参数...] 任务集 [选项] -p [掩码] pid
默认模式(没有选项-p
)已经是接受 CPU 掩码和命令名称。因此您应该能够使用,例如taskset core /bin/whatever
。