1 vmstat是虚拟内存统计信息命令
r 当前正在执行的队列b 当前等待队列阻塞 等待I/Oswpd 已使用的swap大小 单位KBfree 剩余物理内存大小 单位KBbuff 物理内存用来缓冲大小cache 物理内存用来缓存大小si 数据从swap读取到RAM(内存)大小so 数据从RAM写到swap大小bi 磁盘块从文件系统或swap读取到ram大小bo 磁盘块从RAM写到文件系统或swap大小in 当前处理的中断数量cs 上下文切换数量如果si和so列一直非0,那么系统正存在内存压力并换页到交换设备或文件。用其他工具可以研究什么在消耗内存,例如能观察每个进程内存使用的工具。
拥有大内存的系统中,数据列会不对齐影响阅读,可以使用-S选项修改输出单位
选项-a可以输出非活动页和活动页缓存的明细
inact 非活动页 不活跃内存大小(最近未被使用的内存,很符合回收策略的内存)
active 活动页 活跃内存的大小(内存最近被使用过,并且不会被回收)
2 sar 系统活动报告器,可以用来观察当前活动,以及配置用以归档和报告历史统计信息
如下选项提供内存统计信息
-B 换页统计信息
-H 大页面统计信息(Centos6中没有这个选项 Centos 7中有)
-r 内存使用率
-R 内存统计信息
-S 交换空间统计信息
-W 交换统计信息
-B 输出信息
pgpgin/s 页面换入 单位KB/spgpgout/s 页面换出fault/s 严重轻微缺页 次数/smajflt/s 严重缺页pgfree/s 页面加入空闲链表pgscank/s 被后台页面换出守护进程扫描过的页面pgscand/s 直接页面扫描pgsteal/s 页面及交换高速换出回收%vmeff 页面扫描比率,显示页面回收的效率-H 输出信息
kbhugfree 空闲巨型页面存储(大页面尺寸) 单位 KBkbhugused 占用的巨型页面存储器 单位 KB%hugused 占用巨型页面存储器使用率
-r 输出信息 (Centos6比Centos7 少了最后三列)
kbmemfree 可用的空闲内存,单位是KBkbmemused 已经使用的内存,这个没有考虑内核自己用到的内存%memused 目前内存的使用率kbbuffers 缓冲使用内存数量kbcached 缓存使用内存数量kbcommit 当前工作负载需要的内存,这是一个估计值,多少RAM/swap可以保证当前负载不会出现out of memory%commit 当前工作负载需要的内存占RAM+swap的百分比,估计值kbactive 活跃内存的大小(内存最近被使用过,并且不会被回收)kbinact 不活跃内存大小(最近未被使用的内存,很符合回收策略的内存)kbdirty 等待写回硬盘的内存数量
-R输出信息
frmpg/s 每秒系统中空闲的内存页面(memory page freed)数量 负值表明分配 单位页/秒bufpg/s 每秒系统中用作缓冲区(buffer)的附加内存页面增长值campg/s 每秒系统中高速缓存的附加内存页面增长值
-S 输出信息
kbswpfree 释放交换空间 单位KBkbswpused 使用交换空间%swpused 交换空间使用率kbswpcad 高速缓存的交换空间:它同时保存在主存储器和交换设备中,因此不需要磁盘I/O就能被页面换出%swpcad 高速缓存的交换空间使用率
-W 交换统计信息
pswpin/s 每秒钟系统引入的swap pages 单位 页面/秒pswpout/s 每秒钟系统换出的swap pages
3 slabtop命令-实时显示内核slab内存缓存信息
slabtop命令 以实时的方式显示内核“slab”缓存的使用情况。内核的模块在分配资源的时候,为了提高效率和资源的利用率,都是透过slab来分配的。通过slab的信息,再配合源码能粗粗了解系统的运行情况,比如说什么资源有没有不正常的,或者什么资源有没有泄漏。linux系统透过/proc/slabinfo来向用户暴露slab的使用情况也可以用vmstat -m输出。Linux slab 分配器构建一个在空间和时间上都具有高效性的内存分配器。
slabtop -sc
-sc 按照缓存大小排序,最大值在顶端
OBJS 对象数量ACTIVE 活动数量USE 使用率OBJ SIZE 对象大小 字节CACHE SIZE 缓存大小4 ps 进程状态命令,可以列出包括内存使用统计信息在内的多有进程细节
ps aux
%MEM 占用内存的百分比
VSZ 虚拟内存使用大小 KB
RSS 该进程占用的固定內存量(KB)
注:RSS显示主存使用,它也包括如系统库在内的映射共享段,可能被许多进程共享,如果把RSS列求和,可能会发现它超过系统内存的总和,这是应为重复计算了这部分共享内存。
数据列可以用SVR4方式的选项-o选择
ps -eo pid,pmem,vsz,rss,comm
5 pmap 列出进程的内存映射,显示他们的大小,权限及映射对象。这使进程内存能被仔细的检查及量化共享内存
pmap -x 1386 (1386是要检查进程的PID)
Address 内存地址Kbytes 虚拟内存大小RSS 物理内存Dirty 等待写回硬盘的内存数量Mode 权限Mapping 对应的映像文件名注:pmap会暂停进程以报告内存使用,这会影响活跃任务的性能,应在需要诊断和分析时运行它,但不应该作为监视工具频繁运行。
6 free 报告空闲内存,包括高速缓冲和缓存
free -m
total 实际内存大小used 使用内存大小free 剩余内存大小shared 共享内存大小buffers 高速缓冲区占用内存大小cached 高速缓存区占用内存大小Swap 这一行标识交换分区(文件)使用情况注:实际可用内存大小在-/+ buffers/cache: 1636 2325 这一行,实际可用大小为2325MB,因为buffers和cached占用内存在进程需要开销内存时可以被调出
7 swapon 添加和观察交换设备或文件
swapon -s
-s 显示简短的装置信息
-a 自动启动所有swap设备
Filename 文件名称Type 类型 (partition分区)Size 大小 单位KBUsed 使用大小Priority 优先级因为这是安装系统的时候创建的swap分区所以这里显示的类型是partition,下面我自己创建一个swap文件验证一下挂载后的类型
dd if=/dev/zero of=/test.swap bs=1M count=10mkswap /test.swapswapon /test.swapswapon -s