pmapはメモリのアドレス空間を表示するコマンドだ。
コンピュータプログラムやデータはRAMなどのメモリ上に展開されるが、ユーザーは意識しなくてもどこにどんなデータが格納されるかはLinuxが自動で設定してくれる。
メモリ上のデータの場所をアドレスと呼び、その領域をアドレス空間と呼ぶ。
pmapコマンドは、データやプログラムがどこのメモリのアドレス空間に格納されているかを知ることができる。
目次
pmapコマンドの基本
コマンドの基本動作
使い方は、次のとおりだ。
$ pmap プロセス番号(PID)
1675番のメモリのアドレス空間を確認する場合は、次のコマンドだ。
$ pmap 1675
実際にプロセス名からプロセス番号(PID)を知るにはpsコマンドを利用する。
psコマンドでbashのプロセス番号(PID)を調べ、1675番とわかったので、pmapコマンドで1675番のメモリのアドレス空間を調べた。
4項目あり、0026f000などの16進数がアドレス空間の先頭アドレスだ。
8Kは、そのデータ領域、r-x—などはそのメモリ空間のアクセス権限をどのように設定しているか、/lib/libdl-2.12.1.soなどは、マッピングと呼ばれる、どのプロセスかを示している。
画面に表示しきれないが、今回のbashの例では50程度のメモリ空間であった。
pmapコマンドのオプションたち
オプションの一覧
後から詳細をご紹介するが、まずは一覧で見てみよう。
オプション -x
拡張モードでの表示になる
オプション -d
デバイス番号やオフセットも表示する。
オプション -q
ヘッダーを表示しない
-xオプション:拡張モードでの表示になる
拡張モードで表示する書式は次の通りだ。
$ pmap -x プロセス番号(PID)
1675番のメモリのアドレス空間を拡張モードで確認する場合は、次のコマンドだ。
$ pmap -x 1675
1行目に項目名が表示されている。
RSSは、常駐するメモリのサイズがキロバイトで表示されている。
Dirtyはダーティーページという、メモリ上にあってこれからディスクに書き込まれるべきデータの容量のことで、キロバイトで表示されている。
-dオプション:デバイス番号やオフセットも表示する
デバイス番号やオフセットもあわせて表示する書式は次の通りだ。
$ pmap -d プロセス番号(PID)
1675番のメモリのアドレス空間をデバイス番号やオフセットもあわせて確認する場合は、次のコマンドだ。
$ pmap -d 1675
1675番のメモリのアドレス空間をデバイス番号やオフセットもあわせて表示された。
-qオプション:ヘッダーを表示しない
ヘッダーを表示しない書式は次の通りだ。
$ pmap -q プロセス番号(PID)
1675番のメモリのアドレス空間をヘッダーを表示せずに確認する場合は、次のコマンドだ。
$ pmap -q 1675
1675番のメモリのアドレス空間をヘッダーを表示せずに表示した。
pmap関連コマンド
最後にpmapコマンドに関連して、基本的なプロセス関連のコマンドも紹介しておく
psコマンド
プロセスの一覧を表示する。
jobsコマンド
ジョブの一覧を表示する。
killコマンド
プロセスやジョブを停止する。
まとめ
このページでは、pmapコマンドを使ったプロセスが割り当てられたメモリ空間の確認の方法を解説した。
メモリ空間はLinuxが自動で割り当ててくれるものだ。
異なるプロセス同士で同じメモリ空間は使わないようになっている。
本来、コンピュータの作業ごとにどのメモリを使うかというのは、指定が必要だが、Linuxはこの面倒な作業を自動的に行ってくれている。
アプリケーション立ち上げの際に少々時間がかかるのは、このメモリ空間を確保している処理をしているためでもある。
Linuxでは滅多にユーザー自身がメモリ空間に対して操作することはないだろう。しかし、不具合が解決できない時はpmapコマンドでチェックしてみてもいいだろう。