0

我有一个 intel r xeon r cpu w3565 系统。我在它上面运行一个 64 位的 windows 7。

在没有组意识的情况下,任务管理器根据需要显示 8 个逻辑核心(4 个核心和 8 个线程)。

现在,如果我需要 4 个组,每个组有 2 个处理器,我会这样做:

bcdedit/set groupize 2 并重新启动我的机器。我可以看到 2 个组,每个组有 2 个逻辑处理器。我还运行了一个小测试程序:

#include <windows.h>
#include <stdio.h>

int main(int argc, char *argv[]) {   
    WORD numProcs = 0,i;    
    int sum=0;
    numProcs = GetActiveProcessorGroupCount();   

    for(i=0;i<numProcs;i++)
    {
         int procs;
         procs =GetActiveProcessorCount(i);         
         printf("\ngroup %d count :%d\n",i,procs);       
         sum += procs;   
    }   
    printf("numProcs: %d\n", sum);    char abc;    scanf("\n%c",&abc);   
    return 0; 
}

这也将核心数设为 4。早些时候,这将其设为 8(没有群体意识)

现在,如果我将组大小设置为 4,我会得到 2 个组,每个组有 4 个核心。这次我的测试程序输出是8。

然后我将 groupsize 设置为 1,这一次我再次得到了 2 个组,每个核心中都有一个逻辑核心。

我无法理解为什么 Windows 不能将组数扩展到 4,而实际上文档说它可以达到 4。

知道我在这里缺少什么吗?

4

1 回答 1

1

我认为您错过了文档的这一部分:

默认情况下,具有 64 个或更少活动逻辑处理器的系统具有一个处理器组。必须设置处理器组大小以强制将这样的系统配置为具有多个处理器组。

如果系统配置的处理器组大小小于系统中逻辑处理器总数的四分之一,则不使用某些逻辑处理器。

这是为什么当您将 groupsize 设置为 1 时每组只看到 2 个逻辑处理器的一个促成因素。这不到可用逻辑处理器总数的 1/4。我本来希望创建 4 个组,甚至文档中的示例也说明了这一点。

我不知道为什么在将 groupsize 设置为 2 时只看到 4 个逻辑处理器。

文档确实指出处理器组会影响系统的非统一内存访问 (NUMA) 节点,所以这可能是每个组分配多少处理器的一个因素?您的系统上必须有其他因素在限制每组处理器的数量。

于 2012-08-13T22:41:46.373 回答