ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- プロセスのアドレス空間に関する情報の表示
/usr/bin/pmap [-rslF] [-A address_range] [pid | core]...
/usr/bin/pmap -L [-rslF] [-A address_range] [pid] ...
/usr/bin/pmap -x [-aslF] [-A address_range] [pid | core]...
/usr/bin/pmap -S [-alF] [-A address_range] [pid | core]...
pmap ユーティリティーは、プロセスのアドレス空間に関する情報を表示します。
次のオプションがサポートされています。
共有マッピングの匿名およびスワップ予約を表示します。
表示するアドレス空間のサブレンジを指定します。address_range は、次のいずれかの形式で指定します。
単一のアドレスを指定すると、そのアドレスを含むセグメント (-L オプションが指定されている場合は、ページ) を出力するように制限されます。指定されたアドレスがセグメントの開始アドレスに対応している場合は、-L オプションが指定されていても、常にセグメント全体が出力に含められます。
アドレスの後ろにコンマが付いていて、終了アドレスがない場合は、指定されたアドレスを含むセグメント以降のすべてのセグメント (-L オプションが指定されている場合は、ページ) を出力するように制限されます。
開始アドレスと終了アドレスによって指定されたアドレスの範囲の場合は、開始アドレスを含むセグメントまたはページから、終了アドレスを含むセグメントまたはページまでのすべてのセグメント (-L オプションが指定されている場合は、ページ) を出力するように制限されます。
アドレスの範囲がコンマから始まり、開始アドレスがない場合は、最初のセグメントから、指定されたアドレスを含むセグメント (-L オプションが指定されている場合は、ページ) までのすべてのセグメント (-L オプションが指定されている場合は、ページ) を出力するように制限されます。
強制実行。別のプロセスが制御していても、ターゲットプロセスを捕捉します。
「使用法」を参照してください。
未解決の動的リンカーマップ名を表示します。
仮想メモリーを戻す物理メモリーが含まれている lgroup を出力します。
プロセスの予約済みアドレスを表示します。
HAT ページサイズ情報を表示します。
マッピングごとのスワップ予約情報を表示します。詳細は、「使用法」を参照してください。
マッピングごとの追加情報を表示します。詳細は、「使用法」を参照してください。
pmap ユーティリティーは、プロセスのアドレス空間に関する情報を表示します。
/usr/bin/pmap [ -rslF ] [-A address_range] [ pid | core ] ...
デフォルトでは、pmap は、プロセスにマップされる仮想アドレスの順序で、すべてのマッピングを表示します。マッピングサイズ、フラグ、およびマップされたオブジェクト名が表示されます。
-A オプションを使用すると、指定されたアドレスの範囲への出力を制限できます。指定されたアドレスは、セグメント境界まで切り上げまたは切り下げられ、出力にはそれらのアドレスの範囲内のセグメントが含められます。
/usr/bin/pmap -L [ -rslF ] [-A address_range] pid ...
-L オプションを使用すると、指定された仮想メモリーを戻す物理メモリーを含む lgroup を判別できます。-A オプションを一緒に使用すると、指定されたアドレスは、ページ境界まで切り上げまたは切り下げられ、出力はそれらのアドレスの範囲内のページに制限されます。
これは、plgrp(1) と組み合わせて使用すると、目的のスレッドのホーム lgroup がメモリーが配置されている場所と同じであるかどうか、およびスレッドにメモリーの局所性があるかどうかを確認できます。lgrpinfo(1) コマンドもこの pmap オプションと一緒に使用すると役に立ちます。これは、メモリーが配分される lgroup についての詳細な情報が得られる lgroup 階層、コンテンツ、および特性や、それらの lgroup 同士の関係およびその他の lgroup との関係を表示します。
また、スレッドとメモリーの配置は、plgrp(1), pmadvise(1)、または madv.so.1(1) を使用して変更できます。
/usr/bin/pmap -x [ -aslF ] [-A address_range] [ pid | core ] ...
-x オプションは、マッピングごとの追加情報を表示します。このオプションを指定すると、各マッピングのサイズ、常駐物理メモリー (RSS) の量、匿名メモリーの量、およびロックされたメモリーの量が表示されます。この中には、このプロセスが原因でカーネルアドレス空間によって取得される匿名メモリーは含まれません。
/usr/bin/pmap -S [ -alF ] [-A address_range] [ pid | core ] ...
-S オプションは、マッピングごとのスワップ予約情報を表示します。
-F フラグを使用するときは注意してください。2 つの制御プロセスを 1 つの犠牲プロセスに課すと混乱することがあります。一次制御プロセス (通常はデバッガ) が犠牲プロセスを停止しており、一次制御プロセスが当該の proc ツールの適用時に何も実行していない場合のみ、安全性が確保されます。
--s または --L オプションが指定されている場合を除き、プロセス内の各マッピングごとに 1 行が出力されます。-s オプションを指定すると、各ハードウェア変換ページサイズの連続するマッピングごとに 1 行が出力されます。-L オプションを指定すると、同じ lgroup に属する連続するマッピングごとに 1 行が出力されます。-L オプションと -s オプションの両方を指定すると、同じ lgroup に属する各ハードウェア変換ページサイズの連続するマッピングごとに 1 行が出力されます。列ヘッダーは以降の括弧の中に示されています。
出力の最初の列は、各マッピングの開始仮想アドレスを表しています。仮想アドレスは昇順で表示されます。
各マッピングの仮想サイズ (K バイト単位)。
ほかのアドレス空間と共有されるものを含む、マッピングごとに常駐する物理メモリーの量 (K バイト単位)。
指定されたマッピングに関連付けられている匿名メモリーの (システムページサイズを使用してカウントされた) ページ数。-a オプションを指定しないかぎり、ほかのアドレス空間と共有される匿名メモリーは含まれません。
匿名メモリーは、プロセスのヒープおよびスタックに関して、また MAP_PRIVATE (mmap(2) を参照) でマップされたマッピングを含む「書き込み時コピー」ページに関して報告されます。
マッピング内でロックされたページ数。典型的な例として、mlock() でロックされたメモリーや、SHM_SHARE_MMU で作成された System V 共有メモリーがあります。
仮想メモリーのアクセス権がマッピングごとに表示されます。有効なアクセス権は次のとおりです。
当該プロセスによってマッピングを読み取ることができます。
当該プロセスによってマッピングを書き込むことができます。
当該プロセスによってマッピング内に存在する命令を実行できます。
各マッピングの追加情報を示すフラグが表示される場合があります。
監視されたアドレス空間での変更がマップされたファイルに反映され、マッピングを共有するほかのすべてのプロセスから認識できるように、マッピングが共有されます。
このマッピング用のスワップ空間が予約されていません。MAP_NORESERVE で作成されたマッピングと System V ISM 共有メモリーマッピングは、スワップ空間を予約しません。
マッピングのデータがコアファイル内に存在しません (コアファイルに適用される場合にのみ該当)。コアファイルコンテンツの構成については、coreadm(1M) を参照してください。
指定されたマッピングを戻す物理メモリーが含まれている lgroup。
各マッピングの説明名称。表示されるマッピング名の主要なタイプは次のとおりです。
マップされたファイル: プロセスとファイル間のマッピングでは、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 フラグを使って作成されます。
その他: フレームバッファーなどのデバイスを含む、その他のオブジェクトのマッピング。その他のマップされたオブジェクトのマッピング名は表示されません。
このマッピングのハードウェアアドレス変換に使用されるページサイズ (K バイト単位)。詳細は、memcntl(2) を参照してください。
このマッピング用に予約されているスワップ空間の量 (K バイト単位)。つまり、コマンド swap -s で表示される予約可能スワップ空間の合計使用可能プールから差し引かれるスワップ空間。swap(1M) を参照してください。
例 1 プロセスマッピングの表示
デフォルトでは、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 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 1864
例 2 メモリー割り当てとマッピングタイプの表示
-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 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 1056 1016 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 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 50456 42256 18888 16384
例 3 ページサイズ情報の表示
-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 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 50456 42256 18888 16384
例 4 スワップ予約の表示
-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 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 50456 23496
スワップ予約情報を使用すると、各追加プロセスによって使用される仮想スワップの量を見積もることができます。各プロセスは、大域仮想スワッププールから仮想スワップを消費します。大域スワップ予約は、swap(1M) コマンドの「avail」フィールドによって報告されます。
例 5 マルチスレッドプロセスでのスタックのラベル付け
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 ] 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 1384
例 6 lgroup メモリーの割り当ての表示
次の例では、lgroup メモリーの割り当てをマッピングごとに表示します。
example$ pmap -L `pgrep nscd` 100095: /usr/sbin/nscd 00010000 8K r-x-- 2 /usr/sbin/nscd 00012000 48K r-x-- 1 /usr/sbin/nscd 0002E000 8K rwx-- 2 /usr/sbin/nscd 00030000 16K rwx-- 2 [ heap ] 00034000 8K rwx-- 1 [ heap ] . . . FD80A000 24K rwx-- 2 [ anon ] FD820000 8K r-x-- 2 /lib/libmd5.so.1 FD840000 16K r-x-- 1 /lib/libmp.so.2 FD860000 8K r-x-- 2 /usr/lib/straddr.so.2 FD872000 8K rwx-- 1 /usr/lib/straddr.so.2 FD97A000 8K rw--R 1 [ stack tid=24 ] FD990000 8K r-x-- 2 /lib/nss_nis.so.1 FD992000 16K r-x-- 1 /lib/nss_nis.so.1 FD9A6000 8K rwx-- 1 /lib/nss_nis.so.1 FD9C0000 8K rwx-- 2 [ anon ] FD9D0000 8K r-x-- 2 /lib/nss_files.so.1 FD9D2000 16K r-x-- 1 /lib/nss_files.so.1 FD9E6000 8K rwx-- 2 /lib/nss_files.so.1 FDAFA000 8K rw--R 2 [ stack tid=23 ] FDBFA000 8K rw--R 1 [ stack tid=22 ] FDCFA000 8K rw--R 1 [ stack tid=21 ] FDDFA000 8K rw--R 1 [ stack tid=20 ] . . . FEFFA000 8K rw--R 1 [ stack tid=2 ] FF000000 8K rwx-- 2 [ anon ] FF004000 16K rwx-- 1 [ anon ] FF00A000 16K rwx-- 1 [ anon ] . . . FF3EE000 8K rwx-- 2 /lib/ld.so.1 FFBFE000 8K rw--- 2 [ stack ] total 2968K
次の終了値が返されます。
正常終了。
エラーが発生しました。
プロセスファイル
proc ツールサポートファイル
属性についての詳細は、attributes(5) を参照してください。
|
コマンドの構文は「確実」です。-L オプションおよび出力形式は「不確実」です。
ldd(1), lgrpinfo(1), madv.so.1(1), mdb(1), plgrp(1), pmadvise(1), proc(1), ps(1), coreadm(1M), prstat(1M), swap(1M), mmap(2), memcntl(2), meminfo(2), shmop(2), dlopen(3C), proc(4), attributes(5)