假设我有一个四核框和四个相同的进程,每个进程有十个线程。 在Linux中,是否可以说Process A只允许在CPU 0上运行,Process B只允许在CPU 1上运行?
taskset <affinity mask> -p <process>
即
taskset 1 -p 12345
设置进程12345仅使用处理器/内核1
位掩码可以是一个列表(即1,3,4使用4+核心系统的核心1 3和4)或hex掩码(0x0000000D 1,3,4,0x00000001仅用于核心1)
taskset通常位于名为shedutils的包中。
编辑:几乎忘了…如果你想设置一个新的命令的亲和力,而不是改变一个现有的进程,使用:
taskset <mask> <program> [<arg1>]...[<argN>]
taskset(util-linux 2.13-pre7)用法:taskset [options] [mask | 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列表格式使用逗号分隔列表而不是mask:taskset -pc 0,3,7-11 700列表格式的范围可以采用跨步参数:例如0-31:2相当于掩码0x55555555
你可以随时根据你的需要优化你的服务器