From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Sun, 2 Nov 2003 22:03:04 +0300 From: Yura Zotov To: sisyphus@altlinux.ru Subject: Re: [sisyphus] =?koi8-r?B?89TB1MnT1MnLwSDJ?= =?koi8-r?B?09DPzNjaz9fBzsnRINDBzdHUyQ==?= Message-ID: <20031102190304.GA16869@home-pool4-91.com2com.ru> Mail-Followup-To: sisyphus@altlinux.ru References: <20031102083740.GA1872@home-pool4-108.com2com.ru> <3FA4E811.5050107@unisoft.com.ua> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <3FA4E811.5050107@unisoft.com.ua> User-Agent: Mutt/1.4.1i X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.1.3 Precedence: list Reply-To: sisyphus@altlinux.ru List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 Nov 2003 19:03:05 -0000 Archived-At: List-Archive: 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 совпадают. -- Юрий А. Зотов