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


10

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

Answers:


16
taskset <affinity mask> -p <process>

taskset 1 -p 12345

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

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

taskset通常在名为的软件包中shedutils

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

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

1

任务集(util-linux 2.13-pre7)用法:任务集[选项] [掩码| cpu-list] [pid | cmd [args ...]设置或获取进程的亲和力

-p,--pid在现有给定的pid上运行-c,--cpu-list显示并以列表格式指定cpus -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

您可以根据需要始终优化服务器

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.