#内存和交换空间统计信息
sar -r -s 00:00:00 -e 23:59:59 -f /var/log/sr/saDD
这个命令将输出一系列关于系统内存使用的统计信息。
kbmemfree: 空闲内存的大小(以KB为单位)。//free命令中的free值基本一致,所以它不包括buffer和cache的空间.
kbmemused: 已使用的内存大小(以KB为单位)。///free命令中的used值基本一致,所以它包括buffer和cache的空间.
%memused: 已使用内存占总内存的百分比。
kbbuffers: 缓冲区使用的内存大小(以KB为单位)。
kbcached: 缓存使用的内存大小(以KB为单位)。 //free命令中的buffer和cache.
kbcommit: 内核已经承诺分配但尚未分配的内存大小(以KB为单位)。//保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
%commit: 已经承诺分配但尚未分配内存占总内存的百分比。//kbcommit与内存总量(包括swap)的一个百分比.<<<<内存资源是否充足???
Kbactive:活动内存量(以千字节计算)(最近使用的内存,通常不会被收回,除非绝对必要)
kbinact:不活动内存量(以千字节计算的内存(最近使用的内存),更有资格被用于其他目的)。
kbdirty:以KB为单位的内存量等待写入磁盘
# 内存分页监控
sar -B /sar -W
pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflt/s:每秒钟产生的主缺页数.
pgfree/s:每秒被放入空闲队列中的页个数
pgscank/s:每秒被kswapd扫描的页个数
pgscand/s:每秒直接被扫描的页个数
pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数
%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比
sar -x ALL
Set up hugemem kernel.
###################
ppggssccaannkk/s : kswapd(后台回收线程) 每秒扫描的 page 个数。 // 一种是后台内存回收,唤醒 kswapd 内核线程,异步回收的.
pgscand/s: 应用程序在内存申请过程中每秒直接扫描的 page 个数。 // 直接内存回收导致的,增大 min_free_kbytes 这个配置选项来及早地触发后台回收.
pgsteal/s: 扫描的 page 中每秒被回收的个数(ppggssccaannkk+pgscand)。
/proc/zoneinfo
Node 0, zone Normal
pages free 15234
min 10768 页最小阈值(pages_min);
如果剩余内存(pages_free)小于页最小阈值(pages_min),说明用户可用内存都耗尽了,此时就会触发直接内存回收,这时应用程序就会被阻塞,因为两者关系是同步的。
low 13460 页低阈值(pages_low); <<<
如果剩余内存(pages_free)在页低阈值(pages_low)和页最小阈值 (pages_min)之间,说明内存压力比较大,剩余内存不多了。这时 kswapd0 会执行内存回收,直到剩余内存大于高阈值(pages_high)为止。
high 16152 页高阈值(pages_high);