0

Intel r xeon r cpu w3565 システムを持っています。その上で64ビットのWindows 7を実行しています。

グループを認識しない場合、タスク マネージャーは必要に応じて 8 つの論理コア (4 コアと 8 スレッド) を表示します。

それぞれ 2 つのプロセッサーを持つ 4 つのグループが必要な場合は、次のようにします。

bcdedit/set groupssize 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 に設定すると、それぞれ 4 つのコアを持つ 2 つのグループが得られます。今回のテスト プログラムの出力は 8 です。

次に、groupsize を 1 に設定し、今回も各コアに 1 つの論理コアを持つ 2 つのグループを取得しました。

実際にはドキュメンテーションでグループ数を 4 まで拡張できると記載されているのに、Windows がグループ数を 4 に拡張できない理由を理解できません。

ここで何が欠けているのか分かりますか?

4

1 に答える 1

1

ドキュメントのこの部分を見逃したと思います:

デフォルトでは、アクティブな論理プロセッサが 64 個以下のシステムには、1 つのプロセッサ グループがあります。このようなシステムを強制的に複数のプロセッサ グループを持つように構成するには、プロセッサ グループのサイズを設定する必要があります。

システム内の論理プロセッサの総数の 4 分の 1 未満のプロセッサ グループ サイズでシステムが構成されている場合、一部の論理プロセッサは使用されません。

これは、groupsize を 1 に設定したときに、グループごとに 2 つの論理プロセッサしか表示されない理由の一因です。これは、使用可能な論理プロセッサの総数の 1/4 未満です。4 つのグループが作成されることを期待していましたが、ドキュメントの例でも同じことが言えます。

グループサイズを 2 に設定すると、論理プロセッサが 4 つしか表示されない理由がわかりません。

ドキュメントには、プロセッサ グループがシステムの非均一メモリ アクセス (NUMA) ノードに影響を与えると記載されているため、グループごとに割り当てられるプロセッサの数はこれが要因になるのでしょうか? グループごとのプロセッサ数を制限しているシステムには、他の要因が関係しているはずです。

于 2012-08-13T22:41:46.373 に答える