为多个处理器提供任务集

时间:2014-10-06 15:24:16

标签: java bash cpu

我正在使用taskset将CPU 内核4-7 分配给通常使用~200-4-400%CPU的java进程。核心4-7在启动时被隔离,因此只有java进程才能在它们上运行。

最终,taskset似乎将生成的java进程锁定为四个核心之一,而不是将其分配给所有核心。

我在脚本中使用的命令如下:

taskset -c 4,5,6,7 java [...] -jar [...]

使用taskset -c 4,5,6,7 stress -c 4的行为相同,只使用一个核心。

如何将所有四个核分配给java进程?

1 个答案:

答案 0 :(得分:3)

安静一段时间后,我自己找到了答案:它只是添加-a选项,其中如帮助中所述taskset -h

  

"对给定pid的所有任务(线程)进行操作

所以工作命令是taskset -cpa 4-7 'pgrep -n java'

('必须用`替换才能正常运行!)

此处使用

pgrep来获取最新启动的java进程的PID。

我希望这个答案可以帮助那些尝试将多个CPU核心分配给一个进程及其所有线程而不使用复杂容器系统或VM的人。