我正在使用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进程?
答案 0 :(得分:3)
安静一段时间后,我自己找到了答案:它只是添加-a
选项,其中如帮助中所述(taskset -h
)
"对给定pid的所有任务(线程)进行操作
所以工作命令是taskset -cpa 4-7 'pgrep -n java'
('必须用`替换才能正常运行!)
此处使用 pgrep
来获取最新启动的java进程的PID。
我希望这个答案可以帮助那些尝试将多个CPU核心分配给一个进程及其所有线程而不使用复杂容器系统或VM的人。