ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11.1 Information Library (日本語) |
- 優先ページサイズを設定するための共有オブジェクト
mpss.so.1
mpss.so.1 共有オブジェクトは、起動されたプロセスとその子孫のスタック、ヒープ、あるいはその両方の優先ページサイズを選択的に構成する手段を提供します。mpss.so.1 を有効にするには、次の文字列が 1 つ以上の MPSS (Multiple Page Size Support) 環境変数とともに環境内に存在する必要があります (ld.so.1(1) を参照)。
LD_PRELOAD=$LD_PRELOAD:mpss.so.1
mpss.so.1 共有オブジェクトは、事前に読み込まれると次の環境変数を読み取り、その環境変数に固有のものである可能性がある優先ページサイズ要件とプロセスを判定します。
MPSSHEAP および MPSSSTACK には、それぞれヒープおよびスタックの優先ページサイズを指定します。指定したページサイズは、作成されたすべてのプロセスに適用されます。
size は、サポートされるページサイズ (pagesize(1) を参照) または 0 である必要があります。後者の場合、システムは適切なページサイズを選択します (memcntl(2) を参照)。
size は、K (K バイト)、M (M バイト)、G (G バイト)、または T (T バイト) で修飾できます。
config-file は、次の形式の mpss 構成エントリを 1 つ以上含むテキストファイルです。
exec-name exec-args:heap-size:stack-size
exec-name には、アプリケーションまたは実行可能ファイルの名前を指定します。対応する優先ページサイズは、ファイル内にある最初の exec-name に一致する新しく作成されたプロセス (getexecname(3C) を参照) のために設定されます。
exec-name には、フルパス名、基本名、またはパターン文字列を指定できます。パターンマッチングについては、sh(1) の「ファイル名の生成」を参照してください。
exec-args は、引数と照合する任意指定のパターン文字列です。exec-args が指定されていないか、または exec-args が exec-name の引数内に存在する場合にのみ、優先ページサイズは設定されます。
heap-size、stack-size、あるいはその両方を指定しないと、対応する優先ページサイズは設定されません。
MPSSCFGFILE は、MPSSHEAP および MPSSSTACK よりも優先されます。MPSSCFGFILE が設定されていない場合は、/etc/mpss.conf から優先ページサイズが取得されます (存在している場合)。
デフォルトでは、エラーメッセージは syslog(3C) の LOG_ERR レベルと LOG_USER 機能を使用してログに記録されます。MPSSERRFILE に有効な pathname (/dev/stderr など) が含まれている場合は、代わりにエラーメッセージがそこに記録されます。
例 1 MPSSCFGFILE を使用した優先ページサイズの構成
次の Bourne シェルコマンド (sh(1) を参照) は、MPSSCFGFILE 環境変数を使用して、優先ページサイズを foo で始まる実行可能ファイル名を持つ選択された一連のアプリケーションに構成します。MPSS 構成ファイル mpsscfg は、vi(1) などのテキストエディタを使用して以前に作成されていると見なされます。cat(1) コマンドは、内容をダンプしているだけです。
example$ LD_PRELOAD=$LD_PRELOAD:mpss.so.1 example$ MPSSCFGFILE=mpsscfg example$ export LD_PRELOAD MPSSCFGFILE example$ cat $MPSSCFGFILE foo*:512K:64K
アプリケーションが起動されたあと、pmap (proc(1) を参照) を使用して、構成された実際のページサイズを表示できます。
example$ foobar & example$ pmap -s `pgrep foobar`
(pmap の出力に表示された) ページサイズが希望のサイズに構成されていない場合は、MPSS 構成ファイルまたは環境変数のエラーが原因である可能性があります。エラーログ (デフォルトでは /var/adm/messages) でエラーを確認してください。
エラーが見つからない場合は、リソースまたは境界合わせの制約が原因である可能性があります。「注意事項」のセクションを参照してください。
例 2 MPSSHEAP と MPSSSTACK を使用した優先ページサイズの構成
次の Bourne シェルコマンドは、MPSSHEAP および MPSSSTACK 環境変数を使用して、すべてのアプリケーションに対して 512K のヒープの優先ページサイズと 64K のスタックの優先ページサイズを構成しています。
example$ LD_PRELOAD=$LD_PRELOAD:mpss.so.1 example$ MPSSHEAP=512K example$ MPSSSTACK=64K example$ export LD_PRELOAD MPSSHEAP MPSSSTACK
例 3 優先順位ルール (例 2 の続き)
MPSSCFGFILE による優先ページサイズの構成は、MPSSHEAP および MPSSTACK よりも優先されます。例 2 のコマンドのあとに次のコマンドを追加すると、構成ファイル内のアプリケーション、ls コマンド、および引数として ora1 が指定された ora で始まるすべてのアプリケーションを除き、すべてのアプリケーションで 512K のヒープの優先ページサイズと 64K のスタックの優先ページサイズが構成されます。
example$ MPSSCFGFILE=mpsscfg2 example$ export MPSSCFGFILE example$ cat $MPSSCFGFILE ls:: ora* ora1:4m:4m
bss 整列用のテンプレートリンカーマップファイル (mapfile) (「注意事項」を参照)。
構成ファイル
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
cat(1), ld(1), ld.so.1(1), pagesize(1), ppgsz(1), proc(1), sh(1), vi(1), exec(2), fork(2), memcntl(2), getexecname(3C), getpagesize(3C), syslog(3C), proc(4), attributes(5)
ヒープおよびスタックの優先ページサイズは継承されます。子プロセスには親と同じ優先ページサイズが適用されます。exec(2) では、優先ページサイズが mpss 共有オブジェクトを使用して構成されていないかぎり、優先ページサイズがデフォルトのシステムページサイズに戻されます。
また、ppgsz(1) (proc ツール) を使用して、スタックまたはヒープ、あるいはその両方の優先ページサイズを設定することもできます。ただし、名前の一致に基づいて子孫のページサイズを選択して構成することはできません。
ppgsz(1) の「注意事項」も参照してください。