web-dev-qa-db-ja.com

デフォルトのnumaポリシーをシステム全体の「インターリーブ」に設定します

numactrl --interleaveを使用して特定のプロセスのnumaモードを「インターリーブ」(NBを参照)に設定することは可能であることを知っていますが、可能かどうか知りたいですこれをシステム全体のデフォルトにする(別名「システムポリシー」を変更する)たとえば、これを実現するためのカーネルブートフラグがある場合、

NB:ここでは、割り当てられたページをNUMAノード間でインターリーブするカーネルの動作について説明しています-キャッシュラインをインターリーブするBIOSレベルでのメモリコントローラーの動作設定ではありません

4
BeeOnRope

RHEL/CentOS/Fedoraを使用している場合は、 numad デーモンを使用することをお勧めします。 (RedHatペイウォールリンク)。

私はnumactl --interleaveディレクティブをあまり使用していませんが、ワークロードにそれが必要であると判断したようです。より良いコンテキストを提供するために、なぜこれが当てはまるのか説明できますか?

編集:

明示的なnumactl定義を推奨するほとんどのアプリケーションは、 libnumaライブラリ呼び出し を行うか、 ラッパースクリプトnumactlを組み込むようです。

numad側には、コマンドラインまたは/etc/numad.conf ..で指定できる構成オプションがあります。

-K <0|1>
   This option controls whether numad keeps interleaved  memory  spread  across  NUMA  nodes,  or
   attempts to merge interleaved memory to local NUMA nodes.  The default is to merge interleaved
   memory.  This is the appropriate setting to localize processes in a  subset  of  the  system’s
   NUMA  nodes.   If  you  are running a large, single-instance application that allocates inter-
   leaved memory because the workload will have continuous unpredictable memory  access  patterns
   (e.g. a large in-memory database), you might get better results by specifying -K 1 to instruct
   numad to keep interleaved memory distributed.

Xが100xコアカウントであるnumad -K 1 -u Xのようなものでこれを試すと、これが役立つかもしれないと言う人もいます。それを試してみてください。

LinuxおよびNUMAに関するHPのProLiantホワイトペーパー も参照してください。

1
ewwhite