web-dev-qa-db-ja.com

NUMAは常に完全にNUMAですか、それともハイブリッドシステムもありますか?

私は、パフォーマンスが重要なハイエンドサーバーアプリケーションに取り組んでいます。サーバーは多くの場合NUMAアーキテクチャを採用しているため、サーバーアプリケーションはNUMA対応のメモリ割り当て戦略を使用してメモリアクセスのパフォーマンスを向上させます。

ベンチマークは、スレッドとメモリが異なるNUMAノードにある場合のメモリへのアクセスが、スレッドとメモリが同じNUMAノードにある場合と比較して約30%遅いことを示しています。

私の質問は、サーバーがNUMAアーキテクチャを使用する場合、すべてのメモリが特定のプロセッサ専用である場合、またはサーバーがNUMAメモリの他に非NUMAメモリも存在するハイブリッドアプローチを使用できる場合です。そして、この場合、ローカルNUMAメモリ、非ローカルNUMAメモリ、および非NUMAメモリはパフォーマンスに関してどのように比較されますか?

[〜#〜] edit [〜#〜]:サーバーハードウェアはWindowsを実行しています(Windows Server 2012または2012R2が妥当な最小要件です)。

2
Patrick

いいえ、NUMAシステムはNUMAシステムであり、ノード(通常はCPU)があり、各ノードには独自のメモリがあります。最近のほとんどのOSは、プロセスへのすべてのメモリ割り当てが、プロセスが実行されているのと同じノード上にあることを確認しようとします。これが発生しない場合は、ノードが本質的に別のノードのメモリコントローラーのように機能している場合に見たメモリの速度低下が発生しますが、理想的ではありません。しかし、いいえ、現在主流のシステムで利用できることを私が知っているハイブリッドはありません-まず、そのメモリを何が管理するでしょうか?

4
Chopper3

まだコメントできないので….

すべてのメモリはNUMAメモリですが、コードをハックしてメモリの局所性を活用できます。つまり、パフォーマンスの点でより良い結果をもたらすことができるアプリケーションの実行に必要なメモリを備えたCPUにいくつかのアプリケーションを固定できます。特に仮想化を使用している場合、これは非常に重要です。このリンクをご覧ください http://redhatstackblog.redhat.com/2015/05/05/cpu-pinning-and-numa-topology-awareness-in-openstack-compute/ 。お役に立てば幸いです。

1
Quicksilver