1、vmstat
看系统总体内存情况,包括物理内存、虚拟内存、换页等情况
vmstat 1 10:每1秒采样一次输出,持续10次
vmstat -d:看磁盘情况
vmstat -m:看内存详细情况,包括slab每个2的幂分配了多少个
vmstat -S m:系统内存大的时候无法对齐, 按照MB显示可以对齐
vmstat基本信息的解释:
进程相关:
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中包含一个或者多个连续的页框,页框中预先分配多个同类对象。如下:
可以看到诸如inode,dentry,进程描述符这样的同类小对象的分配情况
4、ps
查看所有进程占用内存和cpu的细节,如下
%CPU:占用cpu百分比,注意是占用一个cpu的百分比,不是系统中所有cpu的加和
%MEM:占用内存百分比,内存是物理内存
VSZ:进程占用虚拟空间大小
RSS:进程常驻内存大小,是在物理内存中占用的大小
5、top
监控每个进程占用内存和cpu信息,shift+M可以排序将占用高的进程在前面显示
6、pmap
展示进程虚拟空间的映射关系,和/proc/pid/maps内容一样,pmap对齐做的更好,更易读,如下
包含可执行段、动态库、运行库libc和匿名堆栈