33.12. systemd を使用した NUMA ポリシーの設定

Non-Uniform Memory Access (NUMA) は、コンピューターメモリーのサブシステム設計で、この設計ではメモリーのアクセス時間は、プロセッサーからの物理メモリーの場所により異なります。

CPU に近いメモリーは、別の CPU のローカルにあるメモリーや、一連の CPU 間で共有されているメモリーと比べ、レイテンシーが低くなっています (外部メモリー)。

Linux カーネルでは、NUMA ポリシーを使用して、カーネルがプロセス用に物理メモリーを割り当てる場所 (例: NUMA ノード) を制御します。

systemd は、サービスのメモリー割り当てポリシーを制御するためのユニットファイルオプション NUMAPolicy および NUMAMask を提供します。

手順

NUMAPolicy ユニットファイルオプションで NUMA メモリーポリシーを設定するには以下を実行します。

  1. 選択したサービスで NUMAPolicy ユニットファイルオプションの値を確認します。

    $ systemctl show --property <NUMA policy configuration option> <service name>
  2. root として、NUMAPolicy ユニットファイルオプションに必要なポリシータイプを設定します。

    # systemctl set-property <service name> NUMAPolicy=<value>
  3. サービスを再起動して変更を適用します。

    # systemctl restart <service name>

[Manager] 設定オプションを使用してグローバルな NUMAPolicy を設定するには、以下を実行します。

  1. /etc/systemd/system.conf ファイルで [Manager] セクションにある NUMAPolicy オプションを検索します。
  2. ポリシータイプを編集してファイルを保存します。
  3. systemd 設定をリロードします。

    # systemd daemon-reload
  4. サーバーを再起動します。
重要

bind などの厳密な NUMA ポリシーを設定する場合は、CPUAffinity= ユニットファイルオプションも適切に設定されていることを確認してください。

関連情報