9.2. 自動 NUMA バランシング
自動 NUMA バランシングにより、NUMA ハードウェアシステムで実行されているアプリケーションのパフォーマンスが向上します。これは、Red Hat Enterprise Linux 7 システムではデフォルトで有効になっています。
アプリケーションは通常、プロセスのスレッドがスケジュールされているのと同じ NUMA ノード上のメモリーにアクセスしているときに最高のパフォーマンスを発揮します。自動 NUMA バランシングは、スレッドまたはプロセスである可能性のあるタスクを、アクセスしているメモリーの近くに移動します。また、アプリケーションデータを、それを参照するタスクに近いメモリーに移動します。自動 NUMA バランシングがアクティブになっている場合、これはすべてカーネルによって自動的に実行されます。
自動 NUMA バランシングは、多くのアルゴリズムとデータ構造を使用します。これらは、システムで自動 NUMA バランシングがアクティブな場合にのみアクティブになり、割り当てられます。
- プロセスメモリーの定期的な NUMA マッピング解除
- NUMA ヒント障害
- Migrate-on-Fault (MoF) - メモリーを、それを使用するプログラムが実行される場所に移動します
- task_numa_placement - メモリーを実行中のプログラムの近くに移動します
9.2.1. 自動 NUMA バランシングの設定
自動 NUMA バランシングは、Red Hat Enterprise Linux 7 ではデフォルトで有効になっており、NUMA プロパティーを持つハードウェアで起動すると自動的にアクティブになります。
自動 NUMA バランシングは、次の両方の条件が満たされた場合に有効になります。
- # numactl --hardware shows multiple nodes
- # cat /proc/sys/kernel/numa_balancing shows
1
アプリケーションの手動 NUMA チューニングは、自動 NUMA バランシングをオーバーライドし、メモリーの定期的なマッピング解除、NUMA 障害、移行、およびそれらのアプリケーションの自動 NUMA 配置を無効にします。
場合によっては、システム全体の手動 NUMA チューニングが推奨されます。
自動 NUMA バランシングを無効にするには、次のコマンドを使用します。
# echo 0 > /proc/sys/kernel/numa_balancing
自動 NUMA バランシングを有効にするには、次のコマンドを使用します。
# echo 1 > /proc/sys/kernel/numa_balancing