介绍

pmap - report memory map of a process(查看进程的内存映像信息)

参数说明

  • x extended Show the extended format. 显示扩展格式
  • d device Show the deviceformat. 显示设备格式

结果查看说明

  • Address: start address ofmap 映像起始地址

  • Kbytes: size of map in kilobytes 映像大小

  • RSS: resident set size inkilobytes 驻留集大小

  • Dirty: dirty pages (both sharedand private) in kilobytes 脏页大小

  • Mode: permissions on map 映像权限: r=read,w=write, x=execute, s=shared, p=private (copy on write)

  • Mapping: file backing the map ,or ‘[ anon ]’ for allocated memory, or ‘[ stack ]’ for the program stack. 映像支持文件,[anon]为已分配内存[stack]为程序堆栈

  • Offset: offset into the file 文件偏移

  • Device: device name(major:minor) 设备名

举例说明

查看进程号为1 的进程

pmap -d 1
1:   /usr/lib/systemd/systemd --switched-root --system --deserialize 22
Address           Kbytes Mode  Offset           Device    Mapping
000055b78584b000    1408 r-x-- 0000000000000000 0fd:00002 systemd
000055b785baa000     140 r---- 000000000015f000 0fd:00002 systemd
000055b785bcd000       4 rw--- 0000000000182000 0fd:00002 systemd
000055b7860e6000    1104 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0b4000000     164 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0b4029000   65372 ----- 0000000000000000 000:00000   [ anon ]
00007fe0bc000000     164 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0bc029000   65372 ----- 0000000000000000 000:00000   [ anon ]
00007fe0c3fb6000       4 ----- 0000000000000000 000:00000   [ anon ]
00007fe0c3fb7000    8192 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0c47b7000       4 ----- 0000000000000000 000:00000   [ anon ]
00007fe0c47b8000    8192 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0c4fb8000      16 r-x-- 0000000000000000 0fd:00002 libuuid.so.1.3.0
00007fe0c4fbc000    2044 ----- 0000000000004000 0fd:00002 libuuid.so.1.3.0
00007fe0c51bb000       4 r---- 0000000000003000 0fd:00002 libuuid.so.1.3.0
00007fe0c51bc000       4 rw--- 0000000000004000 0fd:00002 libuuid.so.1.3.0
00007fe0c51bd000     236 r-x-- 0000000000000000 0fd:00002 libblkid.so.1.1.0
00007fe0c51f8000    2044 ----- 000000000003b000 0fd:00002 libblkid.so.1.1.0
00007fe0c53f7000      12 r---- 000000000003a000 0fd:00002 libblkid.so.1.1.0
00007fe0c53fa000       4 rw--- 000000000003d000 0fd:00002 libblkid.so.1.1.0
00007fe0c53fb000       4 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0c53fc000      84 r-x-- 0000000000000000 0fd:00002 libz.so.1.2.7
00007fe0c5411000    2044 ----- 0000000000015000 0fd:00002 libz.so.1.2.7
00007fe0c5610000       4 r---- 0000000000014000 0fd:00002 libz.so.1.2.7
00007fe0c5611000       4 rw--- 0000000000015000 0fd:00002 libz.so.1.2.7
00007fe0c5612000     148 r-x-- 0000000000000000 0fd:00002 liblzma.so.5.2.2
00007fe0c5637000    2044 ----- 0000000000025000 0fd:00002 liblzma.so.5.2.2
00007fe0c5836000       4 r---- 0000000000024000 0fd:00002 liblzma.so.5.2.2
00007fe0c5837000       4 rw--- 0000000000025000 0fd:00002 liblzma.so.5.2.2
00007fe0c5838000      16 r-x-- 0000000000000000 0fd:00002 libcap-ng.so.0.0.0
00007fe0c583c000    2048 ----- 0000000000004000 0fd:00002 libcap-ng.so.0.0.0
00007fe0c5a3c000       4 r---- 0000000000004000 0fd:00002 libcap-ng.so.0.0.0
00007fe0c5a3d000       4 rw--- 0000000000005000 0fd:00002 libcap-ng.so.0.0.0
00007fe0c5a3e000      16 r-x-- 0000000000000000 0fd:00002 libattr.so.1.1.0
00007fe0c5a42000    2044 ----- 0000000000004000 0fd:00002 libattr.so.1.1.0
00007fe0c5c41000       4 r---- 0000000000003000 0fd:00002 libattr.so.1.1.0
00007fe0c5c42000       4 rw--- 0000000000004000 0fd:00002 libattr.so.1.1.0
00007fe0c5c43000       8 r-x-- 0000000000000000 0fd:00002 libdl-2.17.so
00007fe0c5c45000    2048 ----- 0000000000002000 0fd:00002 libdl-2.17.so
00007fe0c5e45000       4 r---- 0000000000002000 0fd:00002 libdl-2.17.so
00007fe0c5e46000       4 rw--- 0000000000003000 0fd:00002 libdl-2.17.so
00007fe0c5e47000     384 r-x-- 0000000000000000 0fd:00002 libpcre.so.1.2.0
00007fe0c5ea7000    2048 ----- 0000000000060000 0fd:00002 libpcre.so.1.2.0
00007fe0c60a7000       4 r---- 0000000000060000 0fd:00002 libpcre.so.1.2.0
00007fe0c60a8000       4 rw--- 0000000000061000 0fd:00002 libpcre.so.1.2.0
00007fe0c60a9000    1800 r-x-- 0000000000000000 0fd:00002 libc-2.17.so
00007fe0c626b000    2048 ----- 00000000001c2000 0fd:00002 libc-2.17.so
00007fe0c646b000      16 r---- 00000000001c2000 0fd:00002 libc-2.17.so
00007fe0c646f000       8 rw--- 00000000001c6000 0fd:00002 libc-2.17.so
00007fe0c6471000      20 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0c6476000      92 r-x-- 0000000000000000 0fd:00002 libpthread-2.17.so
00007fe0c648d000    2044 ----- 0000000000017000 0fd:00002 libpthread-2.17.so
00007fe0c668c000       4 r---- 0000000000016000 0fd:00002 libpthread-2.17.so
00007fe0c668d000       4 rw--- 0000000000017000 0fd:00002 libpthread-2.17.so
00007fe0c668e000      16 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0c6692000      84 r-x-- 0000000000000000 0fd:00002 libgcc_s-4.8.5-20150702.so.1
00007fe0c66a7000    2044 ----- 0000000000015000 0fd:00002 libgcc_s-4.8.5-20150702.so.1
00007fe0c68a6000       4 r---- 0000000000014000 0fd:00002 libgcc_s-4.8.5-20150702.so.1
00007fe0c68a7000       4 rw--- 0000000000015000 0fd:00002 libgcc_s-4.8.5-20150702.so.1
00007fe0c68a8000      28 r-x-- 0000000000000000 0fd:00002 librt-2.17.so
00007fe0c68af000    2044 ----- 0000000000007000 0fd:00002 librt-2.17.so
00007fe0c6aae000       4 r---- 0000000000006000 0fd:00002 librt-2.17.so
00007fe0c6aaf000       4 rw--- 0000000000007000 0fd:00002 librt-2.17.so
00007fe0c6ab0000     252 r-x-- 0000000000000000 0fd:00002 libmount.so.1.1.0
00007fe0c6aef000    2048 ----- 000000000003f000 0fd:00002 libmount.so.1.1.0
00007fe0c6cef000       4 r---- 000000000003f000 0fd:00002 libmount.so.1.1.0
00007fe0c6cf0000       4 rw--- 0000000000040000 0fd:00002 libmount.so.1.1.0
00007fe0c6cf1000       4 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0c6cf2000      84 r-x-- 0000000000000000 0fd:00002 libkmod.so.2.2.10
00007fe0c6d07000    2044 ----- 0000000000015000 0fd:00002 libkmod.so.2.2.10
00007fe0c6f06000       4 r---- 0000000000014000 0fd:00002 libkmod.so.2.2.10
00007fe0c6f07000       4 rw--- 0000000000015000 0fd:00002 libkmod.so.2.2.10
00007fe0c6f08000     116 r-x-- 0000000000000000 0fd:00002 libaudit.so.1.0.0
00007fe0c6f25000    2048 ----- 000000000001d000 0fd:00002 libaudit.so.1.0.0
00007fe0c7125000       4 r---- 000000000001d000 0fd:00002 libaudit.so.1.0.0
00007fe0c7126000       4 rw--- 000000000001e000 0fd:00002 libaudit.so.1.0.0
00007fe0c7127000      40 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0c7131000      52 r-x-- 0000000000000000 0fd:00002 libpam.so.0.83.1
00007fe0c713e000    2048 ----- 000000000000d000 0fd:00002 libpam.so.0.83.1
00007fe0c733e000       4 r---- 000000000000d000 0fd:00002 libpam.so.0.83.1
00007fe0c733f000       4 rw--- 000000000000e000 0fd:00002 libpam.so.0.83.1
00007fe0c7340000      16 r-x-- 0000000000000000 0fd:00002 libcap.so.2.22
00007fe0c7344000    2044 ----- 0000000000004000 0fd:00002 libcap.so.2.22
00007fe0c7543000       4 r---- 0000000000003000 0fd:00002 libcap.so.2.22
00007fe0c7544000       4 rw--- 0000000000004000 0fd:00002 libcap.so.2.22
00007fe0c7545000     144 r-x-- 0000000000000000 0fd:00002 libselinux.so.1
00007fe0c7569000    2044 ----- 0000000000024000 0fd:00002 libselinux.so.1
00007fe0c7768000       4 r---- 0000000000023000 0fd:00002 libselinux.so.1
00007fe0c7769000       4 rw--- 0000000000024000 0fd:00002 libselinux.so.1
00007fe0c776a000       8 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0c776c000     136 r-x-- 0000000000000000 0fd:00002 ld-2.17.so
00007fe0c7978000      40 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0c798b000       8 rw--- 0000000000000000 000:00000   [ anon ]
00007fe0c798d000       4 r---- 0000000000021000 0fd:00002 ld-2.17.so
00007fe0c798e000       4 rw--- 0000000000022000 0fd:00002 ld-2.17.so
00007fe0c798f000       4 rw--- 0000000000000000 000:00000   [ anon ]
00007ffea774d000     132 rw--- 0000000000000000 000:00000   [ stack ]
00007ffea77cb000       8 r-x-- 0000000000000000 000:00000   [ anon ]
ffffffffff600000       4 r-x-- 0000000000000000 000:00000   [ anon ]
mapped: 191116K    writeable/private: 18176K    shared: 0K

最后一行的值

  • mapped 表示该进程映射的虚拟地址空间大小,也就是该进程预先分配的虚拟内存大小,即ps出的vsz

  • writeable/private 表示进程所占用的私有地址空间大小,也就是该进程实际使用的内存大小

  • shared 表示进程和其他进程共享的内存大小

实际应用

每隔两秒查看进程号 21215 的状态

while true; do pmap -d  21215 | tail -1; sleep 2; done