如何在启动时分配处理器给进程

R71*_*R71 7 linux cpu bash ubuntu

Linux 允许使用以下命令将处理器核心分配给正在运行的进程(即具有 pid):

taskset -pc core pid
Run Code Online (Sandbox Code Playgroud)

这假设该进程已经在运行,并且其 pid 可用,并且我们更改分配给它的核心。因此,下次进程在上下文切换或分时期间耗尽 CPU 时,将切换核心。

但是是否可以在进程运行时预先分配核心?据我所知,答案是否定的,但只是想向专家确认一下,以防万一我遗漏了什么。

(我曾在 stackoverflow/69250190 上问过这个问题,但建议我在这里发布这个问题。)

har*_*ymc 7

要在进程运行时分配核心,必须使用 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)


use*_*686 5

概要
       任务集 [选项] 掩码命令 [参数...]

       任务集 [选项] -p [掩码] pid

默认模式(没有选项-p)已经是接受 CPU 掩码和命令名称。所以你应该能够使用,例如,taskset core /bin/whatever.