メモリーとスレッドの配置最適化開発者ガイド

pmadvise ユーティリティー

pmadvise ユーティリティーは、プロセスでのメモリーの使用方法を定義する規則をプロセスに適用します。pmadvise ユーティリティーは、madvise(3C) ツールを使用して、「アドバイス」と呼ばれる規則をプロセスに適用します。このツールは、特定の時間に、メモリー位置の特定の部分範囲に対してアドバイスを適用することができます。一方、madv.so.1(1) ツールは、ターゲットプログラムの実行期間全体にわたり、指定されたタイプのセグメントすべてに対してアドバイスを適用します。

pmadvise ユーティリティーには次のオプションがあります。

-f

このオプションは、ターゲットプロセスを制御下に置きます。このオプションは、ほかのどのプロセスの制御よりも優先します。proc(1) のマニュアルページを参照してください。

-o

このオプションは、ターゲットプロセスに適用するアドバイスを指定します。アドバイスは、次の形式で指定してください。

private=advice
shared=advice
heap=advice
stack=advice
address:length=advice

advice の値には、次のいずれかを指定できます。

normal
random
sequential
willneed
dontneed
free
access_lwp
access_many
access_default

アドレスと長さを指定して、アドバイスを適用する部分範囲を指定することができます。アドレスは 16 進表記、長さはバイト数で指定してください。

長さが指定されていない場合で、開始アドレスがセグメントの先頭を指しているときは、pmadvise ユーティリティーはそのセグメントにアドバイスを適用します。長さには修飾文字 K、M、G、T、P、または E を追加できます。これらはそれぞれ、キロバイト、メガバイト、ギガバイト、テラバイト、ペタバイト、およびエクサバイトを表します。

-v

このオプションは、現在適用されているアドバイス規則の値および位置を、pmap(1) ツールの書式の詳細出力で表示します。

pmadvise ツールは、正当なオプションはすべて処理しようとします。オプションで不正なアドレス範囲が指定されている場合、pmadvise ツールはそのオプションの処理を試みるときにエラーメッセージを表示し、そのオプションをスキップします。構文エラーを検出した場合、pmadvise ツールはどのオプションも処理せずに終了し、使用法のメッセージを表示します。

特定の領域に対するアドバイスが、より一般的な領域に対するアドバイスと衝突している場合は、特定の領域に対するアドバイスが優先されます。特定のアドレス範囲を指定するアドバイスは、ヒープ領域およびスタック領域に対するアドバイスより優先されます。また、ヒープ領域およびスタック領域に対するアドバイスは、プライベートメモリーおよび共有メモリーに対するアドバイスより優先されます。

次の各グループに含まれるアドバイス規則は、同じグループ内のほかのアドバイス規則とは互いに排他的です。

MADV_NORMAL, MADV_RANDOM, MADV_SEQUENTIAL
MADV_WILLNEED, MADV_DONTNEED, MADV_FREE   
MADV_ACCESS_DEFAULT, MADV_ACCESS_LWP, MADV_ACCESS_MANY