我使用任务集将CPU 内核4-7分配给通常使用200-400% CPU的java进程。内核4-7是在启动时隔离的,因此只有java进程才能在其上运行。
最终,任务集似乎将生成的java进程锁定到四个核心之一,而不是将其分配给所有核心。
我在脚本中使用的命令如下所示:
taskset -c 4,5,6,7 java [...] -jar [...]
使用taskset -c 4,5,6,7 stress -c 4
的行为是相同的,并且只使用一个核心。
如何将所有四个核心分配给java进程?
发布于 2014-10-13 21:19:17
安静了一段时间后,我自己找到了答案:它只是添加了-a
选项,它执行,就像帮助 (taskset -h
)中提到的那样
“对给定pid的所有任务(线程)进行操作
所以工作命令是taskset -cpa 4-7 'pgrep -n java'
(“必须用‘替换”才能正常工作!)
这里使用pgrep
获取最新启动的java进程的PID。
我希望这个答案可以帮助那些试图为一个进程及其所有线程分配多个CPU核心的人,而不需要使用复杂的容器、系统或VM。
https://stackoverflow.com/questions/26219500
复制相似问题