Go to main content
マニュアルページ セク ション 1: ユー ザーコマンド

印刷ビューの終了

更新: 2016年12月6日
 
 

ppgsz(1)

名前

ppgsz - スタック、ヒープ、およびその他の匿名セグメントの優先ページサイズの設定

形式

/usr/bin/ppgsz [-F] -o option[,option] cmd | -p pid...

説明

ppgsz ユーティリティーは、ターゲットプロセス (起動された cmd またはプロセス ID リストにあるプロセス) のスタック、ヒープ、およびその他の匿名セグメントの優先ページサイズを設定します。ppgsz は、ページサイズを変更する間、ターゲットプロセスを停止します。memcntl(2) を参照してください。

オプション

サポートしているオプションは、次のとおりです。

–F

強制。別のプロセスによって制御されている場合でも、ターゲットプロセスに優先ページサイズオプションを設定します。–F フラグを使用するときは注意してください。proc(1) を参照してください。

–o option[,option]

option は次のとおりです。

heap=size

このオプションは、ターゲットプロセスのヒープの優先ページサイズを指定します。heap は、bss (初期化されていないデータ) と bss の直後に続く brk 領域として定義されます (brk(2) を参照)。ヒープの優先ページサイズは、既存のヒープと将来割り当てられる追加ヒープメモリーに設定されます。「注意事項」を参照してください。

stack=size

このオプションは、ターゲットプロセスのスタックの優先ページサイズを指定します。スタックの優先ページサイズは、既存のスタック、および拡張されて新しく割り当てられるスタックの部分に設定されます。

anon=size

このオプションは、ターゲットプロセスの既存のすべての MAP_PRIVATE 匿名セグメントの優先ページサイズを指定します。これらは、heap および stack 以外のセグメントであり、指定されたサイズの割り当てられた 1 ページに少なくとも適合する十分な大きさがあります。十分に大きいセグメントの場合、優先ページサイズは、セグメント内のサイズに合わせた最初のアドレスから始まるように設定されます。anon 優先ページサイズは、将来作成される MAP_PRIVATE 匿名セグメントには適用されません。mmap(2)MAP_ANON を参照してください。

匿名メモリーとは、ファイルシステムでファイルと直接関連付けられない MAP_PRIVATE ページのことを指しています。ppgsz コマンドは、memcntl(2) を使用して、匿名セグメントの優先ページサイズを設定します。memcntl(2) の MC_HAT_ADVISE を参照してください。

上記のオプションを少なくとも 1 つ指定する必要があります。

size は、サポートされるページサイズ (pagesize(1) を参照) または 0 である必要があり、後者の場合、システムは適切なページサイズを選択します。memcntl(2) を参照してください。

デフォルトでは size はバイトであり、8 進数 (0)、10 進数、または 16 進数 (0x) で指定できます。数値は、KMG、または T を付けると、それぞれキロバイト、メガバイト、ギガバイト、またはテラバイトで指定できます。41943040x4000004096K0x1000K、および 4M は、異なる方法で 4M バイトを指定しています。

–p pid

–p オプションの後ろのプロセス ID (pid) リストにあるターゲットプロセスに優先ページサイズオプションを設定します。pid リストは、/proc ディレクトリ内の名前で構成することもできます。ページサイズを設定できるのは、プロセスの所有者またはスーパーユーザーのみです。

–p が指定されていない場合は、cmd が解釈されます。ppgsz は、cmd を起動して、新しいプロセスにページサイズオプションを適用します。

ヒープおよびスタックの優先ページサイズは継承されます。ppgsz が完了したあとに、起動されたプロセスまたは pid リスト内のターゲットプロセスから作成された子プロセス (fork(2) を参照) は、ヒープとスタックの優先ページサイズを継承します。exec(2) では、すべてのセグメントの優先ページサイズがデフォルトのシステムページサイズに戻されます (getpagesize(3C) を参照)。その他のすべての匿名セグメントの優先ページサイズは、起動されたプロセスまたはターゲットプロセスの子には継承されません。

使用例 1 ヒープおよびスタックの優先ページサイズの設定

次の例では、ora で始まるコマンドを実行している ora 所有のすべてのプロセスのヒープの優先ページサイズを 4M に、スタックの優先ページサイズを 512K に設定します。

example% ppgsz -o heap=4M,stack=512K -p `pgrep -u ora '^ora'`
使用例 2 匿名セグメントの優先ページサイズを設定する

次の例では、プロセス ID 953 の既存の該当する匿名セグメントの優先ページサイズを 512K に設定します。

example% ppgsz -o anon=512k -p 953

終了ステータス

cmd が指定されて正常に呼び出された (exec(2) を参照) 場合、ppgsz の終了ステータスは cmd の終了ステータスになります。それ以外の場合は、ppgsz は次のいずれかの値で終了します。

0

プロセス ID リストにあるプロセスに優先ページサイズを正常に設定されました。

125

ppgsz でエラーが発生しました。エラーには、無効な引数、無効なページサイズの指定、プロセス ID リストまたは cmd の 1 つ以上のプロセスに対する優先ページサイズの設定の失敗などが含まれます。

126

cmd が見つかりましたが、呼び出せませんでした。

127

cmd が見つかりませんでした。

ファイル

/proc/*

プロセスファイル。

/usr/lib/ld/map.bssalign

bss 整列用のテンプレートリンカーマップファイル (mapfile) (「注意事項」を参照)。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/core-os
インタフェースの安定性
確実

関連項目

ld(1), mpss.so.1(1), pagesize(1), pgrep(1), pmap(1), proc(1), brk(2), exec(2), fork(2), memcntl(2), mmap(2), sbrk(2), getpagesize(3C), proc(4), attributes(5)

Oracle Solaris 11.3 リンカーとライブラリガイド

リソースの制約があるため、優先ページサイズを設定しても、ターゲットプロセスは必ずしも優先ページサイズを取得すると保証されるわけではありません。ターゲットプロセスのヒープとスタックの実際のページサイズを表示するには、pmap(1) を使用します (pmap –s オプションを参照)。

大きいページは、大きいページサイズの倍数のアドレスにマップする必要があります。通常、ヒープは大きいページに割り当てられないため、(最初に大きいページが割り当てられるアドレスより前の) ヒープの開始位置は、システムメモリーのページサイズでマップされます。getpagesize(3C) を参照してください。

大きなページサイズでマップされるヒープを提供するために、bss セグメント宣言の指令を含むリンカー (ld(1)) の mapfile を使用してアプリケーションを構築できます。このディレクティブ、および /usr/lib/ld/map.bssalign で提供されるテンプレート mapfile の詳細は、Oracle Solaris 11.3 リンカーとライブラリガイド の 第 9 章, mapfileを参照してください。割り当ての指定はマシンによって異なることがあり、異なるハードウェアプラットフォームでは利点が損なわれる場合があるため、注意してください。将来のリリースでは、基本となる最適なページサイズをより柔軟に要求する方法が進展する可能性があります。

また、mpss.so.1(1) (事前にロード可能な共有オブジェクト) を使用して、スタックまたはヒープ、あるいはその両方の優先ページサイズを設定することもできます。