How to make Java application use all CPU groups

血红的双手。 提交于 2021-02-19 08:44:04

问题


I am running a java application on Intel(R) Xeon(R) machine which has 72 CPUs (with Hyperthreading on). Since, Microsoft groups CPUs into two groups if there are more than 64 CPUs, the java application uses only 1 group (or in other words 36 CPUs). See the snapshots below for the grouping and CPU usage details. As we can see, the java application is using 36 CPUs at capacity but not able to use other CPUs.

I added +UseNUMA in JVM parameters but it did not work. Does anyone know of JVM option to make it use all CPU groups?

The windows server machine has 72 CPUs after hyperthreading. Windows, by default, groups the CPUs into two memory nodes if number of CPUs are more than 64 (https://msdn.microsoft.com/en-us/library/dd405503(VS.85).aspx). Java application uses only 1 nodes and thus not using the computer at capacity. I enabled node-interleaving but it didn't help either. So, my question is if there is a way to span Java application over multiple memory nodes.

来源:https://stackoverflow.com/questions/37732767/how-to-make-java-application-use-all-cpu-groups

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!