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

印刷ビューの終了

更新: 2016年12月6日
 
 

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 $$
100666: tcsh
00010000     312K r-x--  /usr/bin/tcsh
0006C000      48K rwx--  /usr/bin/tcsh
00078000     536K rwx--    [ heap ]
FF100000     856K r-x--  /lib/libc.so.1
FF1E6000      32K rwx--  /lib/libc.so.1
FF1EE000       8K rwx--  /lib/libc.so.1
FF230000     168K r-x--  /lib/libcurses.so.1
FF26A000      32K rwx--  /lib/libcurses.so.1
FF272000       8K rwx--  /lib/libcurses.so.1
FF280000     576K r-x--  /lib/libnsl.so.1
FF310000      40K rwx--  /lib/libnsl.so.1
FF31A000      24K rwx--  /lib/libnsl.so.1
FF364000       8K rwxs-    [ anon ]
FF370000      48K r-x--  /lib/libsocket.so.1
FF38C000       8K rwx--  /lib/libsocket.so.1
FF3B0000     176K r-x--  /lib/ld.so.1
FF3EC000       8K rwx--  /lib/ld.so.1
FF3EE000       8K rwx--  /lib/ld.so.1
FFBE6000     104K rw---    [ stack ]
%
% pmadvise -o 78000=access_lwp $$

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

次の例では、pmadvise の詳細な出力を表示します。

 
% pmadvise -o heap=access_lwp,stack=access_default -v $$
1720:   -sh
00010000      88K r-x--  /usr/sbin/sh
00036000       8K rwx--  /usr/sbin/sh
00038000      16K rwx--    [ heap ]           <= access_lwp
FF250000      24K r-x--  /lib/libgen.so.1
FF266000       8K rwx--  /lib/libgen.so.1
FF272000       8K rwxs-    [ anon ]
FF280000     840K r-x--  /lib/libc.so.1
FF362000      32K rwx--  /lib/libc.so.1
FF36A000      16K rwx--  /lib/libc.so.1
FF390000      64K rwx--    [ anon ]
FF3B0000     168K r-x--  /lib/ld.so.1
FF3EA000       8K rwx--  /lib/ld.so.1
FF3EC000       8K rwx--  /lib/ld.so.1
FFBFE000       8K rw---    [ stack ]          <= access_default

終了ステータス

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

0

正常終了。

0 以外

エラーが発生した。

ファイル

/proc/*

プロセスファイル

/usr/prob/lib/*

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

属性

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

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

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

関連項目

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