Go to main content

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

印刷ビューの終了

更新: 2018年8月8日
 
 

pmadvise(1)

名前

pmadvise - プロセスへのメモリーに関するアドバイスの適用

形式

pmadvise -o option[,option] [-F] [-l] [-v] pid...

説明

pmadvise は、指定されたプロセスでのメモリーの使用方法に関するアドバイスを madvise(3C) を使用して適用します。

pmadvise では、特定の時点の特定のサブレンジにアドバイスを適用できます。pmadvisemadv.so.1(1) と異なるのは、madv.so.1(1) はターゲットプログラムを実行している間、指定されたタイプのすべてのセグメントにアドバイスを常時適用する点です。

オプション

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

–F

別のプロセスが制御していても、ターゲットプロセスを捕捉して強制実行します。

–F オプションを使用する場合は注意してください。proc(1) を参照してください。

–l

未解決の動的リンカーマップ名を表示します。

–o

適用するアドバイスは次の形式で指定します。


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

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


normal
random
sequential
willneed
dontneed
free
access_lwp
access_many
access_many_pset
access_default

addresslength は、デバイスに適用するサブレンジを指定するために設定できます。デフォルトで、address は 16 進数、length はバイト数になります。

length が指定されておらず、開始アドレスがセグメントの先頭を指している場合、アドバイスはそのセグメントに適用されます。length には、KMGTP、または E を付けて、それぞれキロバイト、メガバイト、ギガバイト、テラバイト、ペタバイト、またはエクサバイトを単位として指定できます。

–v

詳細な情報を出力します。pmap(1) と同様に、どのアドバイスがどこに適用されるかを出力に表示します。これは、指定した領域 (たとえば、非公開、共有など) にアドバイスを適用する場合に、アドバイスが実際に適用された場所についてのフィードバックを取得するときに役に立ちます。

pmadvise は、すべての有効なオプションの処理を試みます。不正なアドレスの範囲が指定された場合は、エラーメッセージが出力され、問題のあるオプションがスキップされます。構文エラーがある場合、pmadvise は、どのオプションも処理せずに終了し、使用法に関するメッセージを出力します。

競合するアドバイスが 1 つの領域に指定された場合、優先順位はもっとも限定されているアドバイスからもっとも限定されていない (つまり、もっとも一般的な) アドバイスの順になります。言い換えると、明示的なアドレス範囲に指定されたアドバイスは、ヒープおよびスタックへのアドバイスより優先され、ヒープおよびスタックへのアドバイスは、非公開メモリーおよび共有メモリーへのアドバイスより優先されます。

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


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

オペランド

次のオペランドがサポートされています。

pid

プロセス ID。

使用例 1 指定されたアドレスのセグメントにアドバイスを適用する

次の例では、指定されたアドレスのセグメントにアドバイスを適用します。


% pmap $$ | grep heap
00000001AEC8C000    8K rw-----  [ heap ]
%
% pmadvise -o 78000=access_lwp $$

%
使用例 2 –v オプションを使用する

次の例では、pmadvise の詳細な出力を表示します。簡略化のため、出力の一部を省略しています。

 
% pmadvise -o heap=access_lwp,stack=access_default -v $$
0000000100000000 1728K r-x----  [ text ] /usr/bin/sh
00000001001B0000   56K r-x----  [ text ] /usr/bin/sh
00000001002BE000    8K rwx----  [ data ] /usr/bin/sh
00000001002C0000   64K rwx----  [ data ] /usr/bin/sh
00000001002D0000   16K rwx----  [ data ] /usr/bin/sh
0000000100300000   24K rw-----  [ bss ] /usr/bin/sh
0000000EEBFC4000    8K rw-----  [ heap ]        <= access_lwp
0007FCB434C00000 2176K r-x----  [ text ] /lib/sparcv9/libc.so.1
...
0007FCB435000000  704K r-x----  [ text ] /lib/sparcv9/libm.so.2
...
0007FCB435200000  256K r-x----  [ text ] /lib/sparcv9/ld.so.1
...
0007FCB435370000  128K rw-----  [ anon ]
...
FFFFFCFCE72A0000   64K rw-----  [ stack ]       <= access_default
FFFFFCFCE72B0000   40K rw-----  [ stack ]       <= access_default

終了ステータス

次の終了ステータスが返されます。

0

正常終了。

0 以外

エラーが発生しました。

ファイル

/proc/*

プロセスファイル

/usr/prob/lib/*

proc ツールサポートファイル

属性

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

属性タイプ
属性値
使用条件
system/core-os
インタフェースの安定性
下記を参照。

コマンドの構文は「確実」です。出力形式は「不確実」です。

関連項目

madv.so.1(1), pmap(1), proc(1), madvise(3C), attributes(7)