是否可以限制 Linux 进程,使其只能在特定机器上的特定内核上运行?

mik*_*ike 10 linux unix central-processing-unit multi-threading

假设我有一个四核盒子和四个相同的进程,每个进程有十个线程。在 Linux 中,是否可以说进程 A 只允许在 CPU 0 上运行,进程 B 只允许在 CPU 1 上运行,等等?

Dav*_*ett 16

taskset <affinity mask> -p <process>
Run Code Online (Sandbox Code Playgroud)

IE

taskset 1 -p 12345
Run Code Online (Sandbox Code Playgroud)

将进程 12345 设置为仅使用处理器/核心 1

位掩码可以是一个列表(即 1,3,4 使用 4+ 核心系统的核心 1 3 和 4)或十六进制位掩码(0x0000000D 1,3,4, 0x00000001 仅代表核心 1)

taskset通常在一个名为shedutils.

编辑:差点忘了...如果要设置新命令的关联性而不是为现有进程更改它,请使用:

taskset <mask> <program> [<arg1>]...[<argN>]
Run Code Online (Sandbox Code Playgroud)