Oracle Solaris カーネルのチューンアップ・リファレンスマニュアル

近傍性グループのパラメータ

この節では、NUMA (Non-Uniform Memory Architecture) を使用するどの SPARC または x86 システムにも適用できる、汎用的なメモリーチューニング可能パラメータについて説明します。

lpg_alloc_prefer

備考欄

大規模なメモリーページの割り当てを行う際に、要求されたページサイズがローカルのメモリーグループ内ではすぐに利用できないが遠隔メモリーグループからであれば要求を満たせるときにヒューリスティックを制御します。

デフォルトでは、ローカルの空きメモリーは断片化されているが、遠隔の空きメモリーは断片化されていない場合に、Solaris OS は遠隔大規模ページを割り当てます。このパラメータを 1 に設定した場合、大規模なメモリーページをローカルで割り当てるため、たとえばローカルのメモリーグループ内で小さなページを集めて大きなページに合体させるといった追加動作が行われます。

データ型

ブール型

デフォルト

0 (ローカルの空きメモリーが断片化されていて、遠隔の空きメモリーが断片化されていない場合は、遠隔割り当てを優先する)

範囲

0 (ローカルの空きメモリーが断片化されていて、遠隔の空きメモリーが断片化されていない場合は、遠隔割り当てを優先する)

1 (ローカルの空きメモリーが断片化されていて、遠隔の空きメモリーが断片化されていない場合でも、可能な場合は常にローカル割り当てを優先する)

動的か

いいえ

検査

なし

どのような場合に変更するか

このパラメータを 1 に設定することが考えられるのは、システム上で長時間動作する複数のプログラムが割り当てる傾向にあるメモリーが単一のプログラムによってアクセスされている場合、または複数プログラムのグループによってアクセスされるメモリーが同じ近傍性グループ (lgroup) 内で使用されていることがわかっている場合です。これらの状況では、ページ合体操作の余分なコストをプログラムの長い実行時間にわたって償却することができます。

このパラメータをデフォルト値 (0) のままにすることが考えられるのは、複数のプログラムが異なる近傍性グループにわたってメモリーを共有する傾向にある場合や、ページが短期間だけ使用される傾向にある場合です。このような状況では、特定の場所における割り当てよりも、要求されたサイズをすばやく割り当てることの方がより重要となります。

ページの場所とサイズは、http://hub.opensolaris.org/bin/view/Main/ で入手可能な NUMA 可観測性ツールを使用して監視できます。TLB の誤動作は、trapstat -T コマンドを使用して監視できます。

コミットレベル

コミットされていない

lgrp_mem_default_policy

備考欄

この変数は、Solaris OS が使用するデフォルトのメモリー割り当てポリシーを反映するものです。この変数は整数であり、その値は sys/lgrp.h ファイルに示されているいずれかのポリシーに対応しているようにします。

データ型

整数

デフォルト

1 (LGRP_MEM_POLICY_NEXT)。これはメモリー割り当てが、デフォルトでメモリー割り当てを実行しているスレッドのホーム lgroup になることを示します。

範囲

指定可能な値は、次のとおりです。

値 

説明 

コメント 

LGRP_MEM_POLICY_DEFAULT

システムのデフォルトのポリシーを使用  

LGRP_MEM_POLICY_NEXT

スレッドのホーム lgroup の割り当ての次 

LGRP_MEM_POLICY_RANDOM_PROC

プロセスにわたってランダム 

LGRP_MEM_POLICY_RANDOM_PSET

プロセッサセットにわたってランダム 

LGRP_MEM_POLICY_RANDOM

すべての lgroup にわたってランダム 

LGRP_MEM_POLICY_ROUNDROBIN

すべての lgroup にわたってラウンドロビン 

LGRP_MEM_POLICY_NEXT_CPU

メモリーにアクセスするための近接した次の CPU 

動的か

いいえ

検査

なし

どのような場合に変更するか

使用するアプリケーションが、メモリーの待ち時間に影響を受ける場合。この待ち時間とは、NUMA を使用するシステム上でローカルメモリーの代わりに遠隔メモリーを割り当てる際に発生する時間をさします。

コミットレベル

コミットされていない

lgrp_mem_pset_aware

備考欄

プロセスがユーザープロセッサセット内で実行されている場合は、この変数によって、このプロセスのためにランダムに配置されたメモリーがシステム内のすべての lgroup から選択されるのか、またはプロセッサセット内のプロセッサで構成されている lgroup のみから選択されるのかが決定されます。

プロセッサセットの作成についての詳細は、psrset(1M) を参照してください。

データ型

ブール型

デフォルト

0。Solaris OS はシステム内のすべての lgroup からメモリーを選択します

範囲
  • 0。Solaris OS はシステム内のすべての lgroup からメモリーを選択します (デフォルト)。

  • 1。プロセッサセット内のプロセッサで構成されている lgroup のみからメモリーを選択しようと試みます。最初の試みが失敗した場合は、任意の lgroup 内のメモリーを割り当てることができます。

動的か

いいえ

検査

なし

どのような場合に変更するか

この値を 1 に設定すると、プロセッサセットがほかのアプリケーションからアプリケーションを切り離すために使用されている場合に、再現性のあるパフォーマンスが得られる可能性があります。

コミットレベル

コミットされていない