serious memory leak in 2.1.46 and 2.1.47

Urs Thuermann (urs@isnogud.escape.de)
Mon, 28 Jul 1997 22:31:12 +0200


Running the 2.1.46 or 2.1.47 kernel I run out of memory after 1 or 2
days of uptime with not very much activity.

The system I'm running is a

i486 DX2-66 in an ASUS SP3 with ncr-53c810
16 MB RAM + 16 MB swap
2.1 GB SCSI disk

A couple of hours ago after 1.5 days uptime with 2.1.47, I noticed the
system becoming slower. Since I had a similar symptom with 2.1.46
before, shortly before I had to reset, I did a cat /proc/meminfo which
showed

MemTotal: 14724 kB
MemFree: 372 kB
MemShared: 4588 kB
Buffers: 212 kB
Cached: 3244 kB
SwapTotal: 16116 kB
SwapFree: 10108 kB

This was with only the usual set of daemon (nothing large, not even a
xntpd) and two emacs's running, each one with only one or two buffers.
In any case the sum of free, shared, buf and cache seems too low.
Just a few minutes later I got failed fork()s because of insufficient
memory when I startet polling with uucp.

I killed the two emacs process afer which cat /proc/meminfo showed

MemTotal: 14724 kB
MemFree: 2288 kB
MemShared: 3600 kB
Buffers: 1252 kB
Cached: 4332 kB
SwapTotal: 16116 kB
SwapFree: 12580 kB

This is with only a few daemons and 2 bash's.

What exactly do the number in meminfo mean? Can a physical page of
memory in more than one or in no one of Free, Shared, Buffers and
Cached? Must be that way, otherwise these 4 would add up to total.
But how can a page appear in two of those 4 items?

What is the difference between Buffer and Cached? I think Shared is
the memory appearing in a process' address space, is it?

Is there a way for a page to get free, other than by a process exiting
or decreasing its sbrk()? I would assume a page would never move from
Cached or from Buffers to Free, but is taken away from Cached or
Buffers only if it's reused in some other way, so it's still not Free.
Is there some doc or intro to read about all this vm management?

urs