如何获得正确数量的逻辑处理器

Tok*_*oke 4 delphi cpu hyperthreading system-information

在Delphi中,我们需要知道用于并行化的CPU数量。到现在为止,我们已经在GetNativeSystemInfo()带有超线程的服务器上使用了运行良好的功能。

但是现在,我们有一台服务器(Intel Xeon Gold 6230)具有40个物理处理器和80个具有超线程的逻辑处理器,并且GetNativeSystemInfo()仅显示40个CPU。

我们制作了一个使用3个调用的小型测试程序:

  1. GetNativeSystemInfo()

  2. GetLogicalProcessorInformation()(“ 如何有效地检测逻辑和物理处理器数量的代码?”

  3. 并查看注册表中的CPU数量:

    计算机\ HKEY_LOCAL_MACHINE \硬件\ DESCRIPTION \系统\中央处理器

对于我们所有的服务器,这3个调用给出了相同数量的CPU:

图片

但是对于英特尔至强,只有注册表为我们提供了80个CPU:

图片

有谁知道为什么它不能在英特尔服务器上运行,还是知道一种确保获得最大CPU数量的方法?

Fab*_*zio 9

GetLogicalProcessorInformation文档中,我找到了这一部分:

在具有64个以上逻辑处理器的系统上,GetLogicalProcessorInformation函数检索有关当前将调用线程分配到的处理器组中的处理器的逻辑处理器信息。使用该 GetLogicalProcessorInformationEx功能检索有关系统上所有处理器组中的处理器的信息。

因此,请尝试使用GetLogicalProcessorInformationEx