I'm sure this is a FAQ somewhere, but I can't find it on my system
right off hand.  So...

Christian Hammers <[EMAIL PROTECTED]> writes:
CH> I have a serious problem. One of the servers I administrate seems to 
CH> have a buffer leak. free and vmstat show me that the buffer size
CH> increases by some K every second leading to a 15M memory loss per hour.
CH> I'm currently running a PII with 256M RAM and kernel 2.2.15
CH> (latest).

Yup, that sounds about right.  Except that it's not a problem.

So memory in your system can be used for one of a few things.  The
kernel might be using it directly; there's probably about a meg
missing from your 'free' total line for this.  You can minimize this
by reducing the number of modules you have loaded and the amount of
stuff you have built into the kernel.  With 256MB of RAM, though, this 
isn't likely to be a huge amount.

Memory can be used by program data and program code.  The latter can
be shared between multiple instances of the same program, and shared
libraries can be shared between multiple programs using the same
library, so all of this shows up in the "shared" column of 'free'.
Unsharable program data shows up in the "used" column (along with
everything else).

At this point, we've accounted for all of the memory that the system
needs for programs.  The third line of 'free's output (-/+
buffers/cache) has this information.  On my system, there's 56MB of
RAM, and 21588K is actually used.

The kernel could just let the rest sit there and be wasted.  Instead,
it takes memory as is available and uses it as disk cache space.  This 
makes the system run faster (since hopefully data needed from the disk 
will already be in memory), and has negligible cost (it's using memory 
that otherwise would be completely unused).  If there's suddenly more
demand for memory, the kernel can just throw away buffers and cache
(the data exists for real on the disk) and use that space for programs 
and data.

CH> Background is that it crashed on it's first day in production service with
CH> a out-of-memory error displayed at the console - after two month working
CH> idle in test mode. After that I upgraded this morning from 2.0.36 to 2.2.15.
CH> I can't tell how exaktly the buffer behaviour was in 2.0.36 :-(

The buffer behavior was the same in 2.0.36.  :-)  What exactly died,
and what error exactly did it get?  If you have a really large
process, it might be running into the system limits; try typing
'ulimit -a' in bash (or other Bourne-shell derivatives) and see if you 
might be running into limits for various things.  You can also use
ulimit to change the limits; see the shell's man page for details.
(In C-style shells, the relevant command is 'limit'.)

-- 
David Maze             [EMAIL PROTECTED]          http://www.mit.edu/~dmaze/
"Theoretical politics is interesting.  Politicking should be illegal."
        -- Abra Mitchell

Reply via email to