Further memory question [was: Clear the computer's memory?]
Dave Carrigan
dave at rudedog.org
Thu Mar 30 17:03:01 UTC 2006
On Thursday 30 March 2006 08:01, R Kimber wrote:
> Are you saying that it takes maybe 24 hours for the kernel to work out
> which memory it can use for buffers and whatever? I assumed that it
> would do this straight away and just dynamically release memory as I
> start up apps.
No no no no no no no no no.
The kernel uses all available memory for buffers. This is dynamic. If you have
2G of memory and your working set of programs is using .7G then the kernel
will use 1.3G for buffers. If your working set grows to 1.4G then the kernel
will use .6G for buffers. If your working set subsequently shrinks to .2G
because you logged off then the kernel will use 1.8G for buffers.
In addition, the kernel does not technically allocate memory in the same sense
that a program has to. The kernel already owns all memory in the system so it
just has to earmark each page according to what it's to be used for. If the
kernel needs a buffer, it looks for a page that hasn't been earmarked for
anything else, and uses it as a buffer. If there are no pages because the
programs have used them all then the kernel won't be able to use any for a
buffer.
Finally, the kernel does not release buffers for no reason. Once a file has
been read, its data is going to be in that buffer for as long as possible,
even if the original process has exited, and even if the original file has
been deleted. The kernel will release a buffer only when something else needs
the memory. Then it will find a page with the oldest data and earmark it for
the new use (which of course could be just another buffer to cache new file
reads).
If you have lots of memory and very few programs running, it's very possible
that there could be memory pages containing hours- or even days-old data in
them [ignoring that the nightly locate command will pretty much refresh every
buffer page because it reads so much data].
But the bottom line is that after a few hours of running programs that are
doing any kind of I/O, all available the memory on the system is going to be
used for something.
--
Dave Carrigan
Seattle, WA, USA
dave at rudedog.org | http://www.rudedog.org/
UNIX-Apache-Perl-Linux-Firewalls-LDAP-C-C++-DNS-PalmOS-PostgreSQL-MySQL-Postfix
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 191 bytes
Desc: not available
URL: <https://lists.ubuntu.com/archives/ubuntu-users/attachments/20060330/2d7aef7f/attachment.sig>
More information about the ubuntu-users
mailing list