linux内存观察常用命令汇总

1、vmstat

看系统总体内存情况,包括物理内存、虚拟内存、换页等情况

vmstat 1 10:每1秒采样一次输出,持续10次

vmstat -d:看磁盘情况

vmstat -m:看内存详细情况,包括slab每个2的幂分配了多少个

vmstat -S m:系统内存大的时候无法对齐, 按照MB显示可以对齐

vmstat基本信息的解释:

linux内存观察常用命令汇总_第1张图片

进程相关:

r:当前在内核运行队列上的task数量,睡眠的进程不在此列

b:当前等待I/O的进程数量

内存相关:

swpd:使用的虚拟内存大小

free:当前可用内存

buff:用于缓冲的内存

cache:用于页缓存的内存

交换相关:

si:从虚拟内存写入的大小,每秒

so:换出到虚拟内存的大小,每秒

2、sar

观测当前内存活动,同时保留一段时间的历史记录,可以回溯,如下:

pgpgin/s:页面换入 1000byte/s

pspgout/s:页面换出 1000byte/s

fault/s:缺页

majflt/s:严重缺页

pgfree/s:页面加入空闲链表

pgscank/s:后台kswapd守护进程扫描过的页面数量

pgscand/s:直接页面扫描

pgsteal/s:页面回收

vmeff:页面回收效率

3、slabtop

输出内核slab缓存使用情况。slab是linux内核用于解决小对象大量复制销毁造成内存碎片问题的解决方案,每个cache内多个slab,每个slab中包含一个或者多个连续的页框,页框中预先分配多个同类对象。如下:

linux内存观察常用命令汇总_第2张图片

可以看到诸如inode,dentry,进程描述符这样的同类小对象的分配情况

4、ps

查看所有进程占用内存和cpu的细节,如下

linux内存观察常用命令汇总_第3张图片

%CPU:占用cpu百分比,注意是占用一个cpu的百分比,不是系统中所有cpu的加和

%MEM:占用内存百分比,内存是物理内存

VSZ:进程占用虚拟空间大小

RSS:进程常驻内存大小,是在物理内存中占用的大小

5、top

监控每个进程占用内存和cpu信息,shift+M可以排序将占用高的进程在前面显示

6、pmap

展示进程虚拟空间的映射关系,和/proc/pid/maps内容一样,pmap对齐做的更好,更易读,如下

linux内存观察常用命令汇总_第4张图片

包含可执行段、动态库、运行库libc和匿名堆栈

你可能感兴趣的:(linux)