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

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

假设我有一个四核机器和四个相同的进程,每个进程有十个线程。在 Linux 中,是否可以规定进程 A 只能在 CPU 0 上运行,进程 B 只能在 CPU 1 上运行,等等?

答案1

taskset <affinity mask> -p <process>

IE

taskset 1 -p 12345

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

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

taskset通常位于名为 的包中shedutils

编辑:几乎忘了......如果您想设置新命令的亲和性而不是为现有进程更改它,请使用:

taskset <mask> <program> [<arg1>]...[<argN>]

答案2

taskset (util-linux 2.13-pre7) 用法:taskset [options] [mask | cpu-list] [pid | cmd [args...]] 设置或获取进程的亲和性

-p, --pid 对现有的给定 pid 进行操作 -c, --cpu-list 以列表格式显示并指定 cpu -h, --help 显示此帮助 -v, --version 输出版本信息

默认行为是运行新命令:taskset 03 sshd -b 1024 您可以检索现有任务的掩码:taskset -p 700 或者设置它:taskset -p 03 700 列表格式使用逗号分隔的列表而不是掩码:taskset -pc 0,3,7-11 700 列表格式的范围可以采用步幅参数:例如 0-31:2 相当于掩码 0x55555555

你可以随时根据需要优化你的服务器

相关内容