この節では、NUMA (Non-Uniform Memory Architecture) を使用するどの SPARC または x86 システムにも適用できる、汎用的なメモリーチューニング可能パラメータについて説明します。
大規模なメモリーページの割り当てを行う際に、要求されたページサイズがローカルのメモリーグループ内ではすぐに利用できないが遠隔メモリーグループからであれば要求を満たせるときにヒューリスティックを制御します。
デフォルトでは、ローカルの空きメモリーは断片化されているが、遠隔の空きメモリーは断片化されていない場合に、Solaris OS は遠隔大規模ページを割り当てます。このパラメータを 1 に設定した場合、大規模なメモリーページをローカルで割り当てるため、たとえばローカルのメモリーグループ内で小さなページを集めて大きなページに合体させるといった追加動作が行われます。
ブール型
0 (ローカルの空きメモリーが断片化されていて、遠隔の空きメモリーが断片化されていない場合は、遠隔割り当てを優先する)
0 (ローカルの空きメモリーが断片化されていて、遠隔の空きメモリーが断片化されていない場合は、遠隔割り当てを優先する)
1 (ローカルの空きメモリーが断片化されていて、遠隔の空きメモリーが断片化されていない場合でも、可能な場合は常にローカル割り当てを優先する)
いいえ
なし
このパラメータを 1 に設定することが考えられるのは、システム上で長時間動作する複数のプログラムが割り当てる傾向にあるメモリーが単一のプログラムによってアクセスされている場合、または複数プログラムのグループによってアクセスされるメモリーが同じ近傍性グループ (lgroup) 内で使用されていることがわかっている場合です。これらの状況では、ページ合体操作の余分なコストをプログラムの長い実行時間にわたって償却することができます。
このパラメータをデフォルト値 (0) のままにすることが考えられるのは、複数のプログラムが異なる近傍性グループにわたってメモリーを共有する傾向にある場合や、ページが短期間だけ使用される傾向にある場合です。このような状況では、特定の場所における割り当てよりも、要求されたサイズをすばやく割り当てることの方がより重要となります。
ページの場所とサイズは、http://hub.opensolaris.org/bin/view/Main/ で入手可能な NUMA 可観測性ツールを使用して監視できます。TLB の誤動作は、trapstat -T コマンドを使用して監視できます。
コミットされていない
この変数は、Solaris OS が使用するデフォルトのメモリー割り当てポリシーを反映するものです。この変数は整数であり、その値は sys/lgrp.h ファイルに示されているいずれかのポリシーに対応しているようにします。
整数
1 (LGRP_MEM_POLICY_NEXT)。これはメモリー割り当てが、デフォルトでメモリー割り当てを実行しているスレッドのホーム lgroup になることを示します。
指定可能な値は、次のとおりです。
値 |
説明 |
コメント |
---|---|---|
0 |
LGRP_MEM_POLICY_DEFAULT |
システムのデフォルトのポリシーを使用 |
1 |
LGRP_MEM_POLICY_NEXT |
スレッドのホーム lgroup の割り当ての次 |
2 |
LGRP_MEM_POLICY_RANDOM_PROC |
プロセスにわたってランダム |
3 |
LGRP_MEM_POLICY_RANDOM_PSET |
プロセッサセットにわたってランダム |
4 |
LGRP_MEM_POLICY_RANDOM |
すべての lgroup にわたってランダム |
5 |
LGRP_MEM_POLICY_ROUNDROBIN |
すべての lgroup にわたってラウンドロビン |
6 |
LGRP_MEM_POLICY_NEXT_CPU |
メモリーにアクセスするための近接した次の CPU |
いいえ
なし
使用するアプリケーションが、メモリーの待ち時間に影響を受ける場合。この待ち時間とは、NUMA を使用するシステム上でローカルメモリーの代わりに遠隔メモリーを割り当てる際に発生する時間をさします。
コミットされていない
プロセスがユーザープロセッサセット内で実行されている場合は、この変数によって、このプロセスのためにランダムに配置されたメモリーがシステム内のすべての lgroup から選択されるのか、またはプロセッサセット内のプロセッサで構成されている lgroup のみから選択されるのかが決定されます。
プロセッサセットの作成についての詳細は、psrset(1M) を参照してください。
ブール型
0。Solaris OS はシステム内のすべての lgroup からメモリーを選択します
0。Solaris OS はシステム内のすべての lgroup からメモリーを選択します (デフォルト)。
1。プロセッサセット内のプロセッサで構成されている lgroup のみからメモリーを選択しようと試みます。最初の試みが失敗した場合は、任意の lgroup 内のメモリーを割り当てることができます。
いいえ
なし
この値を 1 に設定すると、プロセッサセットがほかのアプリケーションからアプリケーションを切り離すために使用されている場合に、再現性のあるパフォーマンスが得られる可能性があります。
コミットされていない