为多个处理器提供任务集

为多个处理器提供任务集

我正在使用taskset来分配CPU核心 4-7到通常使用 ~200-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

我自己找到了答案:只需添加一个-a选项即可正如帮助中提到的taskset -h

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

因此工作命令是

taskset -cpa 4-7 $(pgrep -n java) 

pgrep这里用于获取最新启动的java进程的PID。

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

相关内容