pmap Linux 进程内存分析
介绍
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