NUMBER_OF_PROCESSORS 環境変数はどのように生成されますか?

NUMBER_OF_PROCESSORS 環境変数はどのように生成されますか?

機器のアップグレードを開始するときにどのプロセッサを使用するかを決定するためにテスト中の HP BL460C が 2 台ありますが、そのうちの 1 台でこの環境変数に問題があります。

ブレードは Windows 7 Enterprise を実行しており、NUMBER_OF_PROCESSORS 変数は 14 個のプロセッサを報告していますが、マシンには 14 コアのプロセッサが 2 つインストールされているため、その 2 倍の数が表示されるはずです。msinfo32 とデバイス マネージャーを使用して、両方のプロセッサがインストールされ、マシンによって検出されていることを確認できました。

変数の生成方法に影響を及ぼす何かがあるのでしょうか? Windows はこの数値を設定するためにどのようなプロセスを使用するのでしょうか? 編集できることは知っていますが、再起動後にリセットされるだけなので、あまり役に立ちません。皆さんのご意見をいただければ幸いです。

更新: 問題が変更または修正されるかどうかを確認するために、マシンを Windows 2008R2 として再構築することにしました。しかし、問題は解決しませんでした。したがって、技術的に互換性のない構成が原因ではないと思われます。

答え1

はい...私は本当にこれらのサーバーで Windows Server エディションではなく Windows 7 を実行する理由が知りたいです。環境の詳細を教えていただけますか?

使用しているのはHP ProLiant BL460c Gen92台のサーバーとてもハイエンドIntel E5-2697v3 14コアCPU

HPは製造したワークステーション専用ブレードサーバーGen8 ProLiant ラインまでは、Gen9 に相当するものはまだありません。

この時点で、私はいくつかのことを疑っています:

  • Windows 7 Enterprise は 2 つの CPU ソケットと 64 個の論理コアをサポートできますが、表示されるのは 1 つのソケット分の CPU のみです。28 個のコアが表示されることを期待しているのでしょうか?

  • OS の観点から見て、システムは完全に更新されていますか? そうでない場合は、すべての OS アップデートを実行してください。これは、数週間前にリリースされた非常に新しいサーバー プラットフォーム上の新しい CPU です。現時点では、この OS とハードウェアの組み合わせを使用している人は他にいないと思います。

  • システムファームウェアは最新ですか? そうでない場合は更新してください。

  • ホームページ意図していなかったこのサーバー モデルは Windows 7 で使用することができないため、これを行うと、ハードウェア上で正常性管理エージェントと付加価値ドライバーを実行できなくなります。

  • 潜在的に使用できるWindows 2008 R2 ドライバ/ファームウェアシステム用ですが、すべてサポートされていません。

答え2

私の知る限り、$ENV:NUMBER_OF_PROCESSORSこれは WMI から派生したもので、次のものを使用します。Win32_ComputerSystem.NumberOfLogicalProcessors

混乱をさらに増すのは、Win32_ComputerSystem物理 CPU の数も として報告することですNumberOfProcessors

WMICこれらの値を評価するには、または PowerShell を使用できます。

Get-WmiObject -Class Win32_ComputerSystem|Select NumberOf*

マシンNumberOfProcessorsに1つだけ表示される場合は、ハードウェアの問題か、ライセンス認証の問題がある可能性があります。Windows 7のEnterprise、Professional、Ultimateエディションのみが複数の物理CPUを認識するためです。

答え3

Windows 7 は、そのハードウェアで実行できるオペレーティング システムとしてサポートされていません。これは、インストールされているハードウェアが正しく報告されない理由を十分に説明しています。 マティアスの答えの他の理由最終的にはそれが原因である可能性もありますが、一般的に言えば、「サポートされていない構成」は専門的なシステム管理の目的では十分な説明となります。

Windows システムに関しては、BL460C およびほとんどの HP サーバー ハードウェアでは Windows Server OS 2003 以降のみがサポートされています。

答え4

Justin さん、以前コメントを投稿しましたが、回答とは見なされませんでした。ただし、私にとっては解決策につながりました。そこで、私のシナリオのロジックを理解していただくために、動作と解決策を以下に再投稿しました。そうすれば、同じ問題を抱えているかどうかを判断できます。

こんばんは、ジャスティンさん。HP Proliant Blade BL460C 世代 9 Windows Windows 2012 R2 でも同じ問題が発生しています。世代 8 ではすべてが正しく報告されています。解決策は見つかりましたか。私の調査結果では、'echo %NUMBER_OF_PROCESSORS%' は、msinfo32、taskmanager、さらには Get-WmiObject -Class Win32_ComputerSystem | fl Number* と比較して、不正確で一貫性のない応答を返します。

報告された数は 8 ですが、正しい数は 16 です。

HP と Microsoft の両方と話し合った結果、これは NUMA ノードとインターリーブが原因であると思われます。

この問題は、bies を入力して「ノードインターリーブ」を無効にすることで解決しました。その後、「%number_of_processors%」変数は、論理タスクマスター設定と同じ数のプロセッサを返しました。これで問題は解決しました。

NUMA 設定の詳細については、以下を参照してください。http://msdn.microsoft.com/en-us/library/windows/desktop/aa363804(v=vs.85).aspx

関連情報