R71*_*R71 7 linux cpu bash ubuntu
Linux 允许使用以下命令将处理器核心分配给正在运行的进程(即具有 pid):
taskset -pc core pid
Run Code Online (Sandbox Code Playgroud)
这假设该进程已经在运行,并且其 pid 可用,并且我们更改分配给它的核心。因此,下次进程在上下文切换或分时期间耗尽 CPU 时,将切换核心。
但是是否可以在进程运行时预先分配核心?据我所知,答案是否定的,但只是想向专家确认一下,以防万一我遗漏了什么。
(我曾在 stackoverflow/69250190 上问过这个问题,但建议我在这里发布这个问题。)
要在进程运行时分配核心,必须使用 taskset命令启动进程:
taskset [options] core-mask command [argument...]
Run Code Online (Sandbox Code Playgroud)
CPU亲和性被表示为位掩码,最低位对应于第一个逻辑CPU,最高位对应于最后一个逻辑CPU。
例如,以下命令启动在前两个核心上运行的命令:
taskset 03 sshd -b 1024
Run Code Online (Sandbox Code Playgroud)
还可以使用以下-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.
Run Code Online (Sandbox Code Playgroud)
概要 任务集 [选项] 掩码命令 [参数...] 任务集 [选项] -p [掩码] pid
默认模式(没有选项-p
)已经是接受 CPU 掩码和命令名称。所以你应该能够使用,例如,taskset core /bin/whatever
.