3

我们有一台带有 4 个 Intel Xeon E7 4850 处理器(NUMA 节点)的高端服务器机器,每个处理器有 10 个内核和 2 个线程。所以实际上我们有 80 个核心的机器。(Windows 任务管理器显示 80 个内核)现在我的问题是当我执行 Runtime.getRuntime().availableProcessors() 时它返回 40,所以我的应用程序只产生 40 个线程。为什么会这样?

4

1 回答 1

2

除非您使用的 Windows 2003 存在错误:“Windows Server 2003 中错误地报告了启用物理超线程的处理器的数量或物理多核处理器的数量” ...

...如果启用了超线程,则“40 个核心”的计数是错误的结果,这似乎是因为 Windows 报告了正确数量的逻辑 CPU 核心。

如果 Java 修复不可用,那么您可以使用 JNI调用 GetLogicalProcessorInformation() Windows API 调用(包括源代码,适用于 XP SP3 和更新版本)。

于 2012-11-11T15:51:50.377 回答