
2 つの Xeon(R) Gold 6246R (物理コア 32 個、ログ 64 個、HT あり) を搭載した HPE DL380 G10 サーバーでは、BIOS で次の設定を使用します。
システム構成 > BIOS/プラットフォーム構成 (RBSU) > パフォーマンス オプション > 高度なパフォーマンス チューニング オプション > NUMA グループ サイズの最適化
次の 2 つのオプションから選択できます。
- クラスター化— NUMA 境界に沿ってグループを最適化し、パフォーマンスを向上させます。
- フラット- 複数のグループにまたがるプロセッサを活用するように最適化されていないアプリケーションが、より論理的なプロセッサを利用できるようにします。
「クラスター化」オプションを選択すると、Windows は 1 つの NUMA ノードと、それぞれ 32 個のコアを持つ 2 つのプロセッサ グループのみを報告するようになります。一方、「フラット」オプションでは、2 つの NUMA ノードと、64 個の論理コアを持つ 1 つのプロセッサ グループのみが表示されます。
もちろん、私はすでに NUMA とプロセッサ グループについてよく知っているので、自分のユースケースに最適な設定などについて推奨事項を求めているわけではありません。代わりに質問するのは、NUMA ノードが 1 つしかないのに Windows が 2 つのプロセッサ グループを選択することにしたのはなぜ理にかなっているのか、またその逆はどうなのかということです。また、Windows (Server 2019) が 64 個のコアを 2 つのグループに分割するというドキュメントは見つかりませんでした。これは想定された動作なのでしょうか?
答え1
あなたが見つけた記事は 2008 年のものです。当時、Windows は 64 個を超えるプロセッサを搭載した NUMA コンピュータに直面していましたが、プロセッサ グループの実装は 64 個に制限されていました。当時の解決策は、それぞれ 64 個以下のプロセッサを持つ複数のグループを自動的に作成することでした。
より柔軟な解決策は2014年末に導入されました。私が見つけた最も古い参考文献は HP アドバイザリノート HP Gen9 サーバーに関するもので、2015 年 4 月 24 日付です。
Gen9サーバ向けシステムROMのリビジョン1.30(2014年12月24日)以降のバージョンでは、新しいROMベースのセットアップユーティリティ「NUMAグループサイズ最適化」オペレーティング システムにプロセッサを報告する動作をユーザーが変更できるようにする機能が追加されました。このオプションにより、論理プロセッサが 64 個以下 (「フラット」) の場合、OS はすべての論理プロセッサを 1 つのグループにまとめることができます。
Clustered オプションでは、各 CPU のコアに対して 1 つのプロセッサ グループが作成されます。Flat オプションは、アプリケーションがすべてのコンピューター コアを使用できるようにすることを目的としています。Windows では、既定でアプリケーションは 1 つのグループに制限されているため、1 つのグループのみを認識して使用します。
ご質問に関して:
NUMA ノードが 1 つしかないのに、Windows が 2 つのプロセッサ グループを使用することを決定するのはなぜ理にかなっているのでしょうか。またその逆も同様ですか。
これは Clustered オプションによって決定されます。これは、パフォーマンスのために、アプリケーションとそのすべてのプロセスおよびスレッドを近くのメモリ上ですべて実行するのに意味があります。
アプリケーションで 32 個を超えるコアが必要な場合は、すべてのコアを使用できるようにするために Flat オプションを使用する必要があります。
Windows (Server 2019) が 64 個のコアを 2 つのグループに分割するというドキュメントは見つかりませんでした。これは想定された動作なのでしょうか?
はい、これは想定された動作です。あまり文書化されていませんが、この動作に関する参考文献はあります。たとえば、 Exchange パフォーマンス:HP NUMA BIOS 設定。