Linuxビュープロセスのメモリ分散

1.pmapコマンド

pmapプロセスのメモリイメージ、コンテンツからの出力、/proc/<pid>/mapsおよび/proc/<pid>/smapsこれら2つのファイルに関する情報を表示するコマンド。mapsファイルには、メモリの各部分に関する説明が含まれ、smaps各セクションの特定の詳細が含まれます。

1.1使用方法

Linuxシステムでman pmapヘルプファイル表示するために使用できます。このコマンドの形式はpmap [options] pid次のとおりです。

オプション 特徴
-x、-extended 拡張フォーマットを表示
-d、-device デバイスフォーマットを表示
-q、-quiet ヘッダーと終了行を表示しない
-A、-範囲低、高 指定されたアドレス範囲の結果を表示します。パラメーターはコンマで区切られます
-バツ -xオプションよりも詳細な情報を表示します。情報はファイルから取得されます /proc/PID/smaps
-XX カーネルが提供できるすべての情報を表示します
-c、-read-rc デフォルト設定を読む
-V、-version バージョン情報を表示する

1.2例

pmap -x 7642 プロセス7642のメモリ情報を出力するコマンド。 拡張フォーマットおよびデバイスフォーマットフィールドの意味は次のとおりです。

フィールド 意味
住所 画像の開始アドレス
キロバイト 画像サイズ
RSS レジデントセットサイズ
汚れた ダーティページサイズ
モード 画像の権限
マッピング イメージサポートファイル、[anon]にはメモリが割り当てられています[stack]はプログラムスタックです
オフセット ファイルオフセット
端末 機器名
// 进程启动命令
7642:   java -Xmx256m -server -XX:+PrintGCApplicationStoppedTime -jar bin/center.jar 
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000000400000       4       0       0 r-x-- java
0000000000600000       4       4       4 rw--- java
00000000018dc000    1208    1092    1092 rw---   [ anon ]
00000000f0000000  257536  134672  134672 rw---   [ anon ]
00000000ffb80000    4608       0       0 -----   [ anon ]
0000000100000000   12080   12052   12052 rw---   [ anon ]
0000000100bcc000 1036496       0       0 -----   [ anon ]
00007f53dda8d000     256      60      60 rw---   [ anon ]
......

2.gdbデバッグツール

gdbこの操作は、メモリダンプの指定されたアドレス範囲にツールを使用すると、サービスに影響します。注意して、メモリブロックサイズをダンプしてください。次のコマンドの意味はdumpは、プロセス13618の開始アドレスが0x7ffc0508b000、終了アドレスが0x7ffc0508b000にオフセット132000のメモリを加えたものであることを指定し、199.dumpファイルに保存します。

gdb --batch --pid 13618 -ex "dump memory 199.dump 0x7ffc0508b000 0x7ffc0508b000+132000"

メモリ開始アドレスpmapコマンドを使用して表示できます。Addressフィールドはメモリアドレスですが、注意してください。アドレスの上位0を0x先頭に変更する必要があります上記のこのようなダンプは、オフセット方式に0000000000400000 开始,0000000000600000 结束的内存変換0x400000 0x600000または使用する必要があります0x400000 0x400000+4000

ダンプファイルからは、実際には直接ビューのバイナリ形式が大量のゴミであり、strings -n 10 199.dump10文字を超えるメモリの内容を表示するために使用できます。

  • 実際、この時点でも有用な情報を確認することは困難ですが、フォローアップでperfはツールを使用して調査を続行できますperf record -g -p <pid>Ctrl + Cの終了後しばらくの間実行される、オープンモニタリング関数呼び出しスタックを使用すると、ファイルperf.dataが生成され、実行perf report -i perf.dataレポートが表示されます

おすすめ

転載: blog.csdn.net/weixin_45505313/article/details/105287599