В free
команды дают количество свободной памяти в двух формах: полностью свободная память ( Mem
строка) и одноразовая память, используемая для кешей и буферов ( -/+ 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 МБ свободной памяти, исключая буферы и кеш, и 3422 МБ свободной памяти, включая буферы и кеш.
Как мне получить второе измерение (свободная память, включая буферы и кеш) в sar
?
В -r
флаг для sar
предоставит вам kbmfree, kbmemused, kbbuffers и kbcached. К сожалению, он не суммирует их, как столбец - / + buffers / cache, как free
, поэтому вам придется пропустить ее через скрипт awk или perl, чтобы их суммировать. Попробуй это:
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)
}
}'