Назад | Перейти на главную страницу

Sar: статистика свободной памяти (включая буферы, кеш)

В 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)
    }
}'