[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