[sisyphus] Статистика использования памяти

Yura Zotov =?iso-8859-1?q?yz_=CE=C1_altlinux=2Eru?=
Вс Ноя 2 22:03:04 MSK 2003


On Sun, Nov 02, 2003 at 01:18:41PM +0200, Eugene Ostapets wrote:
> Yura Zotov пишет:
> >Решил я собрать статистику использования памяти и понял, что
> >ничего не понимаю.
> >
> >Почему-то в /proc/meminfo нет параметра "использовано памяти",
> >зато есть куча других, из которых мне понятны только три
> >MemTotal, SwapTotal и SwapFree. Например сейчас показывается что
> >у меня из гигабайта свободно всего 300 мегабайт памяти, хотя все
> >запущенные приложения не могут столько занимать. При этом gkrellm
> >сообщает, что занято "на самом деле" всего 240 мегабайт. Откуда он
> >это берёт я тоже не понимаю.
> >
> >Если верить в свободные 300, то пора покупать память, если в
> >занятые 240, то не пора. Так как же это всё понимать? Как из
> >параметров в /proc/meminfo сделать правильные выводы? Где бы
> >почитать и разобраться?
> >
> >Заранее спасибо за помощь.
> >
> >--
> >Юрий А. Зотов
> >
> 
> В ядра 2.4 исповедуется Сановский принцип: свободная память - потерянная 
> память. Т.е. из вывода команды free:
> eugene на master ~ $ free
>              total       used       free     shared    buffers     cached
> Mem:        192400     187592       4808          0       9984      54948
> -/+ buffers/cache:     122660      69740
> Swap:       506008       7252     498756
> 
> Размер свободной памяти явлется суммой free+cached.

Что ж, спасибо. С этим, вроде бы, разобрался. Правда, не без
помощи исходников gkrellm. Непонятность заключалась в том, что
vmstat в колонке cache показывает значение, отличное от значения
в /proc/meminfo.

/proc/meminfo:
        total:    used:    free:  shared: buffers:  cached:
Mem:  1058619392 822013952 236605440        0 180596736 309510144
...
SwapCached:      29816 kB
....

Так вот, vmstat cache = cached - SwapCached. В gkrellm для
вычисления занятой памяти используют формулу (для значений в
/proc/meminfo) "использовано" = used - buffers - cached. Похоже,
что формула достаточно адекватно отражает статистику
использования памяти. Как влияет вычитание SwapCached я ещё не
определил, так как не было ситуации с активным использованием
свопа.

К тому же оказалось, что при периодическом режиме работы (с
ключом -n), vmstat показывает не
   procs                      memory      swap          io     system      cpu
 r  b  w   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id
 2  0  0 117128 226492 176444 274564    2    2    42    62    0    21  5  1 29

а

   procs                      memory      swap          io     system      cpu
 r  b  w   swpd   free  inact active   si   so    bi    bo   in    cs us sy id
 3  0  0 117128 226464 285700 479964    2    2    42    62    2    21  5  1 29
 4  0  0 117128 226472 285692 479964    0    0     0     0 146994  1416 52  2 46

т.е. появляются какие-то inact и active. Кто знает, что они
значат и как их использовать для вычисления использованной
памяти? Никакой комбинации из total, free, active и inactive я не
придумал, чтобы она была равна значению из вышеприведённой
формулы. А график то хочется построить!

Значения в одноимённых полях у программ top, free и vmstat
совпадают.


--
Юрий А. Зотов




Подробная информация о списке рассылки Sisyphus