Java JVM只使用服务器上一半的内核
我在WindowsServer2019上运行了许多使用OpenJDK11的Java进程。服务器有两个物理处理器,共36个内核;这是一台HP机器。当我启动流程时,我会在Task Manager中看到所有核心的工作分配。这很好。然而,在进程运行一段时间后(时间不一致),机器开始仅使用一半的内核 我正在研究一些理论:Java JVM只使用服务器上一半的内核,java,multithreading,hyperthreading,Java,Multithreading,Hyperthreading,我在WindowsServer2019上运行了许多使用OpenJDK11的Java进程。服务器有两个物理处理器,共36个内核;这是一台HP机器。当我启动流程时,我会在Task Manager中看到所有核心的工作分配。这很好。然而,在进程运行一段时间后(时间不一致),机器开始仅使用一半的内核 我正在研究一些理论: JDK存在一些问题,它无法一致地访问所有核心 Windows Server 2019出现了问题,限制了Java访问所有核心 存在热管理问题,一个处理器变得太热,操作系统将所有处理定向到另
话虽如此,这感觉像是一个黑客。我不明白为什么我必须手动为我的每个java进程分配一个套接字;这项工作应该留给操作系统来完成。我仍然不确定问题出在哪里,是操作系统还是什么。这是一种体系结构吗?有时操作系统会试图将所有线程/进程保持在一个物理CPU上(我知道数据库服务器经常会遇到这种情况),我不确定,有没有办法判断服务器是否有NUMA?@Aaron很遗憾,我在Windows 2019上,您的链接与Linux有关。我可以看到插槽、内核和逻辑处理器。我真的不知道如何确定Windows机器上的NUMA设置。有什么想法吗?