9.2. NUMA の自動負荷分散

NUMA の自動負荷分散により、NUMA ハードウェアシステムで実行するアプリケーションのパフォーマンスが向上します。この機能は Red Hat Enterprise Linux 7 システムではデフォルトで有効にされます。
通常アプリケーションは、スレッドがスケジュールされるのと同じ NUMA ノード上でプロセスのスレッドがメモリーにアクセスする場合に最適に実行されます。NUMA の自動負荷分散は、スレッドがアクセスしているメモリーの近くにタスク (スレッドまたはプロセス) を移行します。さらに、アプリケーションデータを、これを参照するタスクの近くにあるメモリーに移動します。これはすべて、NUMA 自動負荷分散がアクティブな場合にカーネルによって自動的に実行されます。
NUMA の自動負荷分散は、数多くのアルゴリズムおよびデータ構造を使用します。これらは NUMA の自動負荷分散がシステム上で有効な場合にのみアクティブになり、割り当てられます。
  • Periodic NUMA unmapping of process memory (プロセスメモリーの定期的な NUMA マッピング解除)
  • NUMA hinting fault (NUMA ヒンティングフォールト)
  • Migrate-on-Fault (MoF) - メモリーを使用するプログラムが実行される場所にメモリーを移動します。
  • task_numa_placement - 実行中のプログラムをそれらのメモリーの近くに移動します。

9.2.1. NUMA の自動負荷分散の設定

Red Hat Enterprise Linux 7 では、NUMA の自動負荷分散はデフォルトで有効にされており、この機能は NUMA プロパティーが設定されたハードウェア上で起動する際に自動的にアクティブにされます。
NUMA の自動負荷分散は、以下の条件の両方を満たす場合に有効にされます。
  • # numactl --hardware は複数のノードを表示します。
  • # cat /proc/sys/kernel/numa_balancing1 を示します。
NUMA の手動によるアプリケーションのチューニングは NUMA の自動負荷分散をオーバーライドし、メモリーの定期的なマッピング解除、NUMA フォールト、移行、およびそれらのアプリケーションの自動の NUMA 配置を無効にします。
システム全体での手動の NUMA チューニングがより望ましい場合があります。
NUMA の自動負荷分散を無効にするには、以下のコマンドを使用します。
# echo 0 > /proc/sys/kernel/numa_balancing
NUMA の自動負荷分散を有効にするには、以下のコマンドを使用します。
# echo 1 > /proc/sys/kernel/numa_balancing

このページには機械翻訳が使用されている場合があります (詳細はこちら)。