1. vmstat
2. memstat
memstat可以通过sudo apt install memstat安装,安装包括两个文件memstat和memstat.conf。
其中memstat.conf是memstat配置文件,指定memstat检索目录,里面应该包括主要的bin和lib目录。
memstat通过遍历/proc下所有进程,然后解析内存使用情况。
通过对比可以发现,memstat不会统计内核线程的内存使用情况,同时memstat也不会统计所有设备使用的内存。
2.1 memstat使用
memstat使用很简单:
memstat - 显示整个系统内存使用情况。
memstat -p pid - 显示进程pid的内存使用情况。
2.2 memstat解读
下面是一嵌入式设备的memstat情况,和ps对照可以看出不显示内核线程占用情况。
总体来看分为两大部分:进程视角、文件视角。
# memstat
288k: PID (/bin/busybox)-----------------------------------------------------进程可执行文件内存占用
476k: PID (/usr/sbin/sshd)
288k: PID (/bin/busybox)
288k: PID (/bin/busybox)
288k: PID (/usr/bin/memstat)
784k( 760k): /bin/busybox 154-------------------------共享库内存占用情况
52k( 36k): /lib/libnss_files-2.28..so
16k( 8k): /lib/libutil-2.28..so
36k( 28k): /lib/libcrypt-2.28..so
1272k( 1192k): /lib/libc-2.28..so ...
156k( 116k): /lib/ld-2.28..so ...
16k( 8k): /lib/libdl-2.28..so
708k( 696k): /usr/sbin/sshd
1460k( 1364k): /usr/lib/libcrypto.so.1.0.
80k( 72k): /usr/lib/libz.so.1.2.
16k( 8k): /usr/bin/memstat
--------
6224k ( 4288k)
2.2.1 bin内存占用
依次是占用内存大小、pid号、文件路径。
这里的大小不包括库文件,也不包括可执行文件的text段,只是进程私有内存大小。
2.2.3 库内存占用
依次是此文件总的分配内存、括号内是共享部分大小、然后是库路径、最后是使用此库文件的进程号。