NUMA アーキテクチャは、単一のシステム イメージを提供するので、特別な最適化を行わずにオペレーティング システムを実行できることがよくあります。
リモート メモリ アクセスの遅延が大きいと、データがローカル ノードに転送されるのを常に待つため、プロセッサの使用率が低いままになることがあり、メモリ バンド幅の要求の高いアプリケーションにとって NUMA 接続がボトルネックになることがあります。
さらに、そのようなシステムでのパフォーマンスは、変動が大きくなる場合があります。たとえば、1 回のベンチマーク実行においてローカルに配置されたメモリがアプリケーションにあるが、以後の実行ではそのすべてのメモリがリモート ノード上に配置される場合、パフォーマンスが変動します。この現象により、キャパシティ プランニングが困難になることがあります。
一部のハイエンド UNIX システムは、コンパイラとプログラミング ライブラリ内で NUMA 最適化のサポートを提供します。このサポートでは、ソフトウェア開発者が、最適なパフォーマンスのためにプログラムをチューニングおよび再コンパイルする必要があります。1 つのシステムを最適化しても、同じシステムの次の世代において適切に機能することは保証されません。ほかのシステムでは、アプリケーションを実行するノードを管理者が明示的に決定することが許可されています。これは、メモリの 100 パーセントがローカルであることを要求する特定のアプリケーションにとっては許容可能かもしれませんが、管理の負担が発生し、ワークロードが変化した場合にノード間で不均衡が発生することがあります。
理想的なのは、修正を行うことなくただちにアプリケーションが利益を得られるように、システム ソフトウェアが透過な NUMA サポートを提供することです。システムは、管理者が常に介入する必要がなく、ローカル メモリを最大限に使用し、プログラムをインテリジェントにスケジュール設定する必要があります。最後に、公平性またはパフォーマンスを阻害することなく、状態の変化に適切に対応する必要があります。