23.12. systemd を使用した NUMA ポリシーの設定
Non-Uniform Memory Access (NUMA) は、コンピューターメモリーのサブシステム設計で、この設計ではメモリーのアクセス時間は、プロセッサーからの物理メモリーの場所により異なります。
CPU に近いメモリーは、別の CPU のローカルにあるメモリーや、一連の CPU 間で共有されているメモリーと比べ、レイテンシーが低くなっています (外部メモリー)。
Linux カーネルでは、NUMA ポリシーを使用して、カーネルがプロセス用に物理メモリーを割り当てる場所 (例: NUMA ノード) を制御します。
systemd
は、サービスのメモリー割り当てポリシーを制御するためのユニットファイルオプション NUMAPolicy
および NUMAMask
を提供します。
手順
NUMAPolicy
ユニットファイルオプションで NUMA メモリーポリシーを設定するには以下を実行します。
選択したサービスで
NUMAPolicy
ユニットファイルオプションの値を確認します。$ systemctl show --property <NUMA policy configuration option> <service name>
root として、
NUMAPolicy
ユニットファイルオプションに必要なポリシータイプを設定します。# systemctl set-property <service name> NUMAPolicy=<value>
サービスを再起動して変更を適用します。
# systemctl restart <service name>
[Manager] 設定オプションを使用してグローバルな NUMAPolicy
を設定するには、以下を実行します。
-
/etc/systemd/system.conf
ファイルで [Manager] セクションにあるNUMAPolicy
オプションを検索します。 - ポリシータイプを編集してファイルを保存します。
systemd
設定をリロードします。# systemd daemon-reload
- サーバーを再起動します。
bind
などの厳密な NUMA ポリシーを設定する場合は、CPUAffinity=
ユニットファイルオプションも適切に設定されていることを確認してください。
関連情報
- systemctl コマンドを使用してアプリケーションに制限を設定する
-
systemd.resource-control(5)
、systemd.exec(5)
、およびset_mempolicy(2)
の man ページ