Sar:空闲内存统计(包括缓冲区,caching)

free命令以两种forms提供可用内存的数量:完全空闲的内存( Mem行)和用于caching和缓冲区的一次性内存( -/+ buffers/cache行):

 -bash-3.2$ free -m total used free shared buffers cached Mem: 16057 15173 884 0 17 2520 -/+ buffers/cache: 12635 3422 Swap: 12287 4937 7350 

在这个例子中,有884 MB的空闲内存,不包括缓冲区和caching,还有3422 MB的空闲内存包括缓冲区和caching。

如何在sar获得第二次测量(空闲内存,包括缓冲区和caching)?

sar-r标志将为您提供kbmfree,kbmemused,kbbuffers和kbcached。 不幸的是,它们不像free命令那样像 – / + buffers / cache列一样,所以你必须通过awk或者perl脚本来pipe理它们来完成它们。 尝试这个:

 sar -r |\ awk ' { if (NR > 3 && $3 != "kbmemfree" && $3 != "") { if ($1 != "Average:") { kbmemfree = $3 kbmemused = $4 kbbuffers = $6 kbcached = $7 } else { kbmemfree = $2 kbmemused = $3 kbbuffers = $5 kbcached = $6 } kbfree_plus_bufcache = kbmemfree + kbbuffers + kbcached kbused_minus_bufcache = kbmemused - kbbuffers - kbcached printf("%s %15d %15d\n", $0, kbfree_plus_bufcache, kbused_minus_bufcache) } else if ($3 == "kbmemfree") { printf("%s %15s %15s\n", $0, "kbfree+bufcache", "kbused-bufcache") } else { printf("%s\n", $0) } }'