Comments 3
Предлагаю богатую идею для копирайтера. Выборочно переводить man'ы. Материалу до конца жизни хватит.
спасибо, давно хотел разобраться в соответствии вывода утилиты free c /proc/meminfo
по мотивам вышеописанного в статье даже написал однострочник для наглядного вывода соответствия:
$ free -k -w && eval $(awk -F'(: +)| ' '!/\(/{print $1"="$2}' /proc/meminfo) && echo -e "\ntotal\t\t$MemTotal\nused\t\t$[MemTotal-MemFree-Buffers-Cached-Slab]\nfree\t\t$MemFree\nshared\t\t$Shmem\nbuffers\t\t$Buffers\ncache\t\t$Cached\ncache+\t\t$[Cached+Slab]\navailable\t$MemAvailable\nSwap_total\t$SwapTotal\nSwap_used\t$[SwapTotal-SwapFree]\nSwap_free\t$SwapFree\n" && free -k -w
total used free shared buffers cache available
Mem: 28663908 2134948 24857728 343788 156752 1514480 25282120
Swap: 0 0 0
total 28663908
used 2071780
free 24857728
shared 343788
buffers 156752
cache 1400928
cache+ 1577648
available 25282120
Swap_total 0
Swap_used 0
Swap_free 0
total used free shared buffers cache available
Mem: 28663908 2134948 24857728 343788 156752 1514480 25282120
Swap: 0 0 0
и по факту оказалось что used(MemTotal - MemFree - Buffers - Cached - Slab) и cache(Cached + Slab) не соответствуют друг другу
правда у меня не Red Hat а Arch но думаю это не сильно играет роль, версия free
$ free -V
free from procps-ng 3.3.17
стал разбираться и оказалось что если в формулах подсчета used и cache заменить Slab на SReclaimable то всё чудесным образом налаживается
то есть вышеописанный однострочник в "правильной форме" будет выглядеть так:
free -k -w && eval $(awk -F'(: +)| ' '!/\(/{print $1"="$2}' /proc/meminfo) && echo "\ntotal\t\t$MemTotal\nused\t\t$[MemTotal-MemFree-Buffers-Cached-SReclaimable]\nfree\t\t$MemFree\nshared\t\t$Shmem\nbuffers\t\t$Buffers\ncache\t\t$[Cached+SReclaimable]\navailable\t$MemAvailable\nSwap_total\t$SwapTotal\nSwap_used\t$[SwapTotal-SwapFree]\nSwap_free\t$SwapFree\n" && free -k -w
Sign up to leave a comment.
Интерпретация /proc/meminfo и вывода free для Red Hat Enterprise Linux