名前 | 形式 | 機能説明 | オプション | 使用法 | 表示形式 | 使用例 | 終了ステータス | ファイル | 属性 | 関連項目
/usr/bin/pmap [-rslF] [pid | core]...
/usr/bin/pmap -x [-aslF] [pid | core]...
/usr/bin/pmap -S [-alF] [pid | core]...
pmap ユーティリティーは、プロセスのアドレス空間に関する情報を表示します。
サポートしているオプションは、以下のとおりです。
共有マッピングの匿名およびスワップ予約を表示します。
強制実行。別のプロセスが制御していても、ターゲットプロセスを捕捉します。
未解決の動的リンカーマップ名を表示します。
プロセスの予約済みアドレスを表示します。
HAT ページサイズ情報を表示します。
マッピングごとのスワップ予約情報を表示します。詳細は、「使用法」を参照してください。
マッピングごとの追加情報を表示します。詳細は、「使用法」を参照してください。
pmap ユーティリティーは、プロセスのアドレス空間に関する情報を表示します。
/usr/bin/pmap [ -rslF ] [ pid | core ] ... |
デフォルトでは、pmap は、プロセスにマッピングされている仮想アドレスの順序でマッピングを表示します。マッピングサイズ、フラグ、およびマッピングされたオブジェクト名が表示されます。
/usr/bin/pmap -x [ -aslF ] [ pid | core ] ... |
-x オプションは、マッピングごとの追加情報を表示します。このオプションを指定すると、各マッピングのサイズ、常駐物理メモリー (RSS) の量、匿名メモリーの量、およびロックされたメモリーの量が表示されます。これには、このプロセスに起因してカーネルアドレス空間によって取得される匿名メモリーは含まれません。
/usr/bin/pmap -S [ -alF ] [ pid | core ] ... |
-S オプションは、マッピングごとのスワップ予約情報を表示します。
プロセス内のマッピングごとに 1 行の出力が表示されます。ただし、-s オプションが指定されている場合は、各ハードウェア変換ページサイズの連続するマッピングに対して 1 行が表示されます。列ヘッダーは以降の丸括弧の中に示されています。
出力の最初の列は、各マッピングの開始仮想アドレスを表しています。仮想アドレスは昇順で表示されます。
各マッピングの仮想サイズ (キロバイト単位)。
ほかのアドレス空間と共有されるものを含む、マッピングごとに常駐する物理メモリーの量 (キロバイト単位)。
指定されたマッピングに関連付けられている匿名メモリーの (システムページサイズを使用してカウントされた) ページ数。-a オプションを指定しないかぎり、ほかのアドレス空間と共有される匿名メモリーは含まれません。
匿名メモリーは、プロセスのヒープおよびスタック、MAP_PRIVATE (mmap(2) を参照) にマップされたマッピングを含む「書き込み時コピー」ページに関して報告されます。
マッピング内でロックされたページ数。典型的な例は、mlock() でロックされたメモリーや、SHM_SHARE_MMU で作成された System V 共有メモリーです。
仮想メモリーアクセス権がマッピングごとに表示されます。有効なアクセス権は次のとおりです。
当該プロセスによってマッピングを読み取ることができます。
当該プロセスによってマッピングを書き込むことができます。
当該プロセスによってマッピング内に存在する命令を実行できます。
各マッピングの追加情報を示す次のフラグが表示される場合があります。
観測されたアドレス空間における変更がマップしているファイルに確定され、マッピングを共有するほかのすべてのプロセスから見えるように、マッピングが共有されます。
スワップ空間は、このマッピング用に予約されていません。MAP_NORESERVE で作成されたマッピング、および System V ISM 共有メモリーマッピングは、スワップ空間を予約しません。
マッピングのデータがコアファイルに存在しません (コアファイルに適用される場合にのみ該当)。コアファイルコンテンツの構成については、coreadm(1M) を参照してください。
各マッピングの説明名称。表示されるマッピング名の主要なタイプは次のとおりです。
マップされたファイル: プロセスとファイル間のマッピングの場合、pmap コマンドは各マッピングのファイル名の解決を試みます。ファイル名を解決できない場合、pmap は、ファイルが含まれているデバイスのメジャー番号とマイナー番号、およびファイルのファイルシステム i ノード番号を表示します。
匿名メモリー: ファイルシステム内のどの名前付きオブジェクトまたはファイルにも関連しないメモリーは [ anon ] として報告されます。
pmap コマンドは、よく知られたいくつかの匿名メモリーマッピングについてはその一般的な名前を表示します。
マッピングはプロセスヒープです。
マッピングはメインスタックです。
マッピングはスレッド n のスタックです。
マッピングは、スレッド n の代替シグナルスタックとして使用されます。
マッピングの共通名が不明な場合、pmap はマッピング名として [ anon ] を表示します。
System V 共有メモリー: System V 共有メモリーシステムコールを使用して作成されたマッピングは、次に示す名前で報告されます。
マッピングは、System V 共有メモリーマッピングです。マッピングの作成に使用された共有メモリー識別子が報告されます。
マッピングは、System V 共有メモリーの「Intimate Shared Memory」バリエーションです。ISM マッピングは、 shmat(2) (shmop(2) を参照) に従って、SHM_SHARE_MMU フラグセットを使用して作成されます。
マッピングは、ISM のページング可能バリエーションです。ページング可能な ISM は、shmat(2) (shmop(2) を参照) に従って、SHM_PAGEABLE フラグセットを使用して作成されます。
その他: フレームバッファーなどのデバイスを含む、その他のオブジェクトのマッピング。その他のマップオブジェクトのマッピング名は表示されません。
このマッピングのハードウェアアドレス変換に使用されるページサイズ (キロバイト単位)。詳細は、memcntl(2) を参照してください。
このマッピング用に予約されているスワップ空間の量 (キロバイト単位)。つまり、コマンド swap - s を使用して表示される予約可能スワップ空間の合計使用可能プールから差し引かれるスワップ空間。swap(1m) を参照してください。
デフォルトでは、pmap はターゲットプロセスのアドレス空間内のマッピングごとに 1 行を表示します。次の例は、一般的な Bourne シェルのアドレス空間を表示します。
example$ pmap 102905 102905: sh 00010000 192K r-x-- /usr/bin/ksh 00040000 8K rwx-- /usr/bin/ksh 00042000 40K rwx-- [ heap ] FF180000 664K r-x-- /usr/lib/libc.so.1 FF236000 24K rwx-- /usr/lib/libc.so.1 FF23C000 8K rwx-- /usr/lib/libc.so.1 FF250000 8K rwx-- [ anon ] FF260000 16K r-x-- /usr/lib/en_US.ISO8859-1.so.2 FF272000 16K rwx-- /usr/lib/en_US.ISO8859-1.so.2 FF280000 560K r-x-- /usr/lib/libnsl.so.1 FF31C000 32K rwx-- /usr/lib/libnsl.so.1 FF324000 32K rwx-- /usr/lib/libnsl.so.1 FF340000 16K r-x-- /usr/lib/libc_psr.so.1 FF350000 16K r-x-- /usr/lib/libmp.so.2 FF364000 8K rwx-- /usr/lib/libmp.so.2 FF380000 40K r-x-- /usr/lib/libsocket.so.1 FF39A000 8K rwx-- /usr/lib/libsocket.so.1 FF3A0000 8K r-x-- /usr/lib/libdl.so.1 FF3B0000 8K rwx-- [ anon ] FF3C0000 152K r-x-- /usr/lib/ld.so.1 FF3F6000 8K rwx-- /usr/lib/ld.so.1 FFBFC000 16K rw--- [ stack ] total 1880K |
-x オプションは、マッピングごとのメモリー割り当てとマッピングタイプに関する情報を表示する場合に使用できます。常駐メモリー、非共有匿名メモリー、およびロックされたメモリーの量が、マッピングごとに表示されます。
example$ pmap -x 102908 102908: sh Address Kbytes RSS Anon Locked Mode Mapped File 00010000 88 88 - - r-x-- sh 00036000 8 8 8 - rwx-- sh 00038000 16 16 16 - rwx-- [ heap ] FF260000 16 16 - - r-x-- en_US.ISO8859-1.so.2 FF272000 16 16 - - rwx-- en_US.ISO8859-1.so.2 FF280000 664 624 - - r-x-- libc.so.1 FF336000 32 32 8 - rwx-- libc.so.1 FF360000 16 16 - - r-x-- libc_psr.so.1 FF380000 24 24 - - r-x-- libgen.so.1 FF396000 8 8 - - rwx-- libgen.so.1 FF3A0000 8 8 - - r-x-- libdl.so.1 FF3B0000 8 8 8 - rwx-- [ anon ] FF3C0000 152 152 - - r-x-- ld.so.1 FF3F6000 8 8 8 - rwx-- ld.so.1 FFBFE000 8 8 8 - rw--- [ stack ] -------- ----- ----- ----- ------ total Kb 1072 1032 56 - |
各マッピングの常駐メモリーと匿名メモリーの数字を使用することで、プロセスの各追加インスタンスによって使用される増分メモリーの量を見積もることができます。
前述の例では、Bourne シェルには 1032K バイトの常駐メモリーがあります。ただし、シェルによって使用される大量の物理メモリーは、シェルのほかのインスタンスと共有されます。シェルの別の同一インスタンスは、可能な場合にほかのシェルと物理メモリーを共有し、非共有部分に匿名メモリーを割り当てます。前述の例では、2 つめ以降の各 Bourne シェルは約 56K バイトの追加物理メモリーを使用します。
異なるマッピングタイプを含むプロセスの出力形式を、より複雑な例で示します。この例では、マッピングは次のとおりです。
0001000: Executable text, mapped from 'maps' program 0002000: Executable data, mapped from 'maps' program 0002200: Program heap 0300000: A mapped file, mapped MAP_SHARED 0400000: A mapped file, mapped MAP_PRIVATE 0500000: A mapped file, mapped MAP_PRIVATE | MAP_NORESERVE 0600000: Anonymous memory, created by mapping /dev/zero 0700000: Anonymous memory, created by mapping /dev/zero with MAP_NORESERVE 0800000: A DISM shared memory mapping, created with SHM_PAGEABLE with 8MB locked via mlock(2) 0900000: A DISM shared memory mapping, created with SHM_PAGEABLE, with 4MB of its pages touched. 0A00000: A DISM shared memory mapping, created with SHM_PAGEABLE, with none of its pages touched. 0B00000: An ISM shared memory mapping, created with SHM_SHARE_MMU |
example$ pmap -x 15492 15492: ./maps Address Kbytes RSS Anon Locked Mode Mapped File 00010000 8 8 - - r-x-- maps 00020000 8 8 8 - rwx-- maps 00022000 20344 16248 16248 - rwx-- [ heap ] 03000000 1024 1024 - - rw-s- dev:0,2 ino:4628487 04000000 1024 1024 512 - rw--- dev:0,2 ino:4628487 05000000 1024 1024 512 - rw--R dev:0,2 ino:4628487 06000000 1024 1024 1024 - rw--- [ anon ] 07000000 512 512 512 - rw--R [ anon ] 08000000 8192 8192 - 8192 rwxs- [ dism shmid=0x5] 09000000 8192 4096 - - rwxs- [ dism shmid=0x4] 0A000000 8192 8192 - 8192 rwxsR [ ism shmid=0x2 ] 0B000000 8192 8192 - 8192 rwxsR [ ism shmid=0x3 ] FF280000 680 672 - - r-x-- libc.so.1 FF33A000 32 32 32 - rwx-- libc.so.1 FF390000 8 8 - - r-x-- libc_psr.so.1 FF3A0000 8 8 - - r-x-- libdl.so.1 FF3B0000 8 8 8 - rwx-- [ anon ] FF3C0000 152 152 - - r-x-- ld.so.1 FF3F6000 8 8 8 - rwx-- ld.so.1 FFBFA000 24 24 24 - rwx-- [ stack ] -------- ------- ------- ------- ------- total Kb 50464 42264 18888 16384 |
-s オプションは、アドレス空間の各部分のハードウェア変換ページサイズを表示する場合に使用できます。(Solaris の複数ページサイズのサポートの詳細については、memcntl(2) を参照してください)。
次の例では、マッピングの大部分は 8K バイトのページサイズを使用している一方で、ヒープは 4M バイトのページサイズを使用していることが分かります。
同じページサイズの常駐ページの非連続領域は、それぞれ別のマッピングとして報告されます。次の例では、libc.so テキストのほんの一部が常駐であるため、libc.so ライブラリは複数の別々のマッピングとして報告されます。
example$ pmap -xs 15492 15492: ./maps Address Kbytes RSS Anon Locked Pgsz Mode Mapped File 00010000 8 8 - - 8K r-x-- maps 00020000 8 8 8 - 8K rwx-- maps 00022000 3960 3960 3960 - 8K rwx-- [ heap ] 00400000 8192 8192 8192 - 4M rwx-- [ heap ] 00C00000 4096 - - - - rwx-- [ heap ] 01000000 4096 4096 4096 - 4M rwx-- [ heap ] 03000000 1024 1024 - - 8K rw-s- dev:0,2 ino:4628487 04000000 512 512 512 - 8K rw--- dev:0,2 ino:4628487 04080000 512 512 - - - rw--- dev:0,2 ino:4628487 05000000 512 512 512 - 8K rw--R dev:0,2 ino:4628487 05080000 512 512 - - - rw--R dev:0,2 ino:4628487 06000000 1024 1024 1024 - 8K rw--- [ anon ] 07000000 512 512 512 - 8K rw--R [ anon ] 08000000 8192 8192 - 8192 - rwxs- [ dism shmid=0x5 ] 09000000 4096 4096 - - 8K rwxs- [ dism shmid=0x4 ] 0A000000 4096 - - - - rwxs- [ dism shmid=0x2 ] 0B000000 8192 8192 - 8192 4M rwxsR [ ism shmid=0x3 ] FF280000 136 136 - - 8K r-x-- libc.so.1 FF2A2000 120 120 - - - r-x-- libc.so.1 FF2C0000 128 128 - - 8K r-x-- libc.so.1 FF2E0000 200 200 - - - r-x-- libc.so.1 FF312000 48 48 - - 8K r-x-- libc.so.1 FF31E000 48 40 - - - r-x-- libc.so.1 FF33A000 32 32 32 - 8K rwx-- libc.so.1 FF390000 8 8 - - 8K r-x-- libc_psr.so.1 FF3A0000 8 8 - - 8K r-x-- libdl.so.1 FF3B0000 8 8 8 - 8K rwx-- [ anon ] FF3C0000 152 152 - - 8K r-x-- ld.so.1 FF3F6000 8 8 8 - 8K rwx-- ld.so.1 FFBFA000 24 24 24 - 8K rwx-- [ stack ] -------- ------- ------- ------- ------- total Kb 50464 42264 18888 16384 |
-S オプションは、プロセスのスワップ予約の内容を表示する場合に使用できます。プロセス内のマッピングごとに予約されたスワップ空間の量が表示されます。共有マッピングのスワップ予約は、システム全体で 1 回と見なされるため、ゼロとして報告されます。
example$ pmap -S 15492 15492: ./maps Address Kbytes Swap Mode Mapped File 00010000 8 - r-x-- maps 00020000 8 8 rwx-- maps 00022000 20344 20344 rwx-- [ heap ] 03000000 1024 - rw-s- dev:0,2 ino:4628487 04000000 1024 1024 rw--- dev:0,2 ino:4628487 05000000 1024 512 rw--R dev:0,2 ino:4628487 06000000 1024 1024 rw--- [ anon ] 07000000 512 512 rw--R [ anon ] 08000000 8192 - rwxs- [ dism shmid=0x5] 09000000 8192 - rwxs- [ dism shmid=0x4] 0A000000 8192 - rwxs- [ dism shmid=0x2] 0B000000 8192 - rwxsR [ ism shmid=0x3] FF280000 680 - r-x-- libc.so.1 FF33A000 32 32 rwx-- libc.so.1 FF390000 8 - r-x-- libc_psr.so.1 FF3A0000 8 - r-x-- libdl.so.1 FF3B0000 8 8 rwx-- [ anon ] FF3C0000 152 - r-x-- ld.so.1 FF3F6000 8 8 rwx-- ld.so.1 FFBFA000 24 24 rwx-- [ stack ] -------- ------- ------- total Kb 50464 23496 |
スワップ予約情報は、各追加プロセスによって使用される仮想スワップの量を見積もる場合に使用できます。各プロセスは、大域仮想スワッププールから仮想スワップを消費します。大域スワップ予約は、swap(1m) コマンドの「avail」フィールドによって報告されます。
example$ pmap 121969 121969: ./stacks 00010000 8K r-x-- /tmp/stacks 00020000 8K rwx-- /tmp/stacks FE8FA000 8K rwx-R [ stack tid=11 ] FE9FA000 8K rwx-R [ stack tid=10 ] FEAFA000 8K rwx-R [ stack tid=9 ] FEBFA000 8K rwx-R [ stack tid=8 ] FECFA000 8K rwx-R [ stack tid=7 ] FEDFA000 8K rwx-R [ stack tid=6 ] FEEFA000 8K rwx-R [ stack tid=5 ] FEFFA000 8K rwx-R [ stack tid=4 ] FF0FA000 8K rwx-R [ stack tid=3 ] FF1FA000 8K rwx-R [ stack tid=2 ] FF200000 64K rw--- [ altstack tid=8 ] FF220000 64K rw--- [ altstack tid=4 ] FF240000 112K rw--- [ anon ] FF260000 16K rw--- [ anon ] FF270000 16K r-x-- /usr/platform/sun4u/lib/libc_psr.so.1 FF280000 672K r-x-- /usr/lib/libc.so.1 FF338000 24K rwx-- /usr/lib/libc.so.1 FF33E000 8K rwx-- /usr/lib/libc.so.1 FF35A000 8K rwxs- [ anon ] FF360000 104K r-x-- /usr/lib/libthread.so.1 FF38A000 8K rwx-- /usr/lib/libthread.so.1 FF38C000 8K rwx-- /usr/lib/libthread.so.1 FF3A0000 8K r-x-- /usr/lib/libdl.so.1 FF3B0000 8K rwx-- [ anon ] FF3C0000 152K r-x-- /usr/lib/ld.so.1 FF3F6000 8K rwx-- /usr/lib/ld.so.1 FFBFA000 24K rwx-- [ stack ] total 1400K |
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWesu |
インタフェースの安定性 |
以下を参照。 |
コマンドの構文は開発中です。出力形式は不安定です。
ldd(1), mdb(1), proc(1), ps(1), coreadm(1M), swap(1m), mmap(2), memcntl(2), shmop(2), dlopen(3C), proc(4), attributes(5)
名前 | 形式 | 機能説明 | オプション | 使用法 | 表示形式 | 使用例 | 終了ステータス | ファイル | 属性 | 関連項目