在 Delphi 中,我们需要知道用于并行化的 CPU 数量。到目前为止,我们已经使用了该GetNativeSystemInfo()
功能,该功能运行良好,也适用于具有超线程的服务器。
但是现在,我们有一个服务器(Intel Xeon Gold 6230),它有 40 个物理处理器和 80 个超线程逻辑处理器,并且GetNativeSystemInfo()
只显示了 40 个 CPU。
我们制作了一个使用 3 次调用的小型测试程序:
GetNativeSystemInfo()
GetLogicalProcessorInformation()
(来自如何有效检测逻辑和物理处理器数量的代码?)并查看注册表中的 CPU 数量:
计算机\HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor
对于我们所有的服务器,这 3 个调用提供相同数量的 CPU:
但对于 Intel Xeon,只有 Registry 为我们提供了 80 个 CPU:
有谁知道为什么它不适用于英特尔服务器,或者知道一种确保获得最大 CPU 数量的方法?