From: Robert Love <rml@novell.com>
To: jon ross <jonross@gmail.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: VM disk cache behavior.
Date: Tue, 08 Feb 2005 12:18:03 -0500 [thread overview]
Message-ID: <1107883084.23409.7.camel@betsy.boston.ximian.com> (raw)
In-Reply-To: <e130a7170502080906596561d7@mail.gmail.com>
On Tue, 2005-02-08 at 12:06 -0500, jon ross wrote:
> I have an app with a small fixed memory footprint that does a lot of
> random reads from a large file. I thought if I added more memory to
> the machine the VM would do more caching of the disk, but added memory
> does not seem to make any difference. I played with some of the params
> in /proc/sys/vm and none of them seem to have any effect.
>
> I tired both a 2.4.20 & 2.6.10 kernels with no difference.
>
> The machine is a Dell 2560. I tired memory configs of 512M, 1G, 4G and
> the average read-times do not change.
>
> Do I need to set/compile anything to allow the VM to use the memory?
> If is was a way to tell how much memory the VM is using for a drive
> cache I could at least tell if my kernel is miss-configured or my app
> sucks.
More memory will allow the kernel to keep more cache in memory. You can
see how much memory the kernel is using for cache with free(1).
That does not sound like your problem, though. It sounds like you want
the kernel to do more _read-ahead_, e.g. cache things _before_ you even
need them (and then you might want more memory to actually keep all of
the stuff alive in the cache, but that is a secondary problem).
Unfortunately, since you are doing random reads, it is very hard for the
kernel to do intelligent read-ahead.
What you can do is pre-fault the entire file into memory. This is not a
bad idea if you know you are going to ultimately read much of the file.
You can prefault the file automatically and asynchronously using
posix_fadvise(). Example:
if (posix_fadvise (fd, 0, 0, POSIX_FADV_WILLNEED))
perror ("posix_fadvise");
See posix_fadvise(2) for more information.
It might also be faster to use mmap(1) over read(2). Then you can use
madvise().
Best,
Robert Love
next prev parent reply other threads:[~2005-02-08 17:23 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-08 17:06 jon ross
2005-02-08 17:18 ` Robert Love [this message]
2005-02-08 20:07 ` Chris Wedgwood
2005-02-09 0:37 ` Andy Isaacson
2005-02-09 5:03 ` Kevin Puetz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1107883084.23409.7.camel@betsy.boston.ximian.com \
--to=rml@novell.com \
--cc=jonross@gmail.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®