A.13. numad
numad は自動 NUMA アフィニティー管理デーモンです。NUMA リソースの割り当てと管理を動的に改善するために、システム内の NUMA トポロジーとリソースの使用状況を監視します。
numad が有効な場合は、その動作により自動 NUMA バランシングのデフォルト動作が上書きされる点に注意してください。
A.13.1. コマンドラインからの numad の使用
numad を実行可能ファイルとして使用するには、単に以下を実行します。
# numad
numad の実行中に、アクティビティーは
/var/log/numad.log
に記録されます。アクティビティーは、以下のコマンドで停止されるまで継続されます。
# numad -i 0
numad を停止しても、NUMA アフィニティーを改善するために行った変更は削除されません。システムが大幅に変更される場合、numad を再度実行すると、新しい条件下でパフォーマンスを向上させるためにアフィニティーが調整されます。
numad 管理を特定プロセスに制限するには、以下のオプションで開始します。
# numad -S 0 -p pid
- -p pid
- 指定 pid を明示的な対象リストに加えます。指定されたプロセスは numad プロセスの重要度しきい値に達するまで管理されません。
- -S 0
- これにより、プロセススキャンのタイプが
0
に設定され、numad 管理が明示的に含まれるプロセスに制限されます。
利用可能な numad オプションの詳細は numad の man ページを参照してください。
$ man numad
A.13.2. numad のサービスとしての使用
numad はサービスとして実行されますが、現在のシステムのワークロードに基づいてシステムを動的にチューニングしようとします。アクティビティーは
/var/log/numad.log
に記録されます。
サービスを開始するには、以下のコマンドを実行します。
# systemctl start numad.service
起動後もサービスを維持する場合は以下のコマンドを実行します。
# chkconfig numad on
利用可能な numad オプションの詳細は numad の man ページを参照してください。
$ man numad
A.13.3. プレプレースメントアドバイス
numad は、さまざまなジョブ管理システムでクエリーできるプレプレースメントアドバイスサービスを提供し、プロセスに対する CPU およびメモリーリソースの初期バインディングを提供します。numad が実行可能ファイルとして実行しているかサービスとして実行しているかに関係なく、このプレプレースメントアドバイスを利用することができます。
A.13.4. KSM をともなう numad の使用
KSM を NUMA システムで使用している場合は、
/sys/kernel/mm/ksm/merge_nodes
パラメーターの値を 0
に変更し、NUMA ノード全体でページのマージを回避します。これを実行しないと、KSM はノードにまたがってページをマージするので、リモートメモリーアクセスが増大します。また、カーネルメモリーが計算した統計情報は、ノード間での大量のマージ後にはそれぞれの間で相反する場合があります。そのため、KSM デーモンが多くのメモリーページをマージした後に、numad
は利用可能なメモリーの正確な量と場所について混乱する可能性があります。KSM は、システムにメモリーをオーバーコミットしている場合にのみ、有用なものです。システムに未使用のメモリーが大量にあると、KSM デーモンをオフにして無効にすることでパフォーマンスが高まる場合があります。