Mitchell Vincent wrote:
Working with some data conversion here (that will eventually go into
an SQLite database). I'm hoping you IO wizards can offer some help on
a question that I've been trying to get answered.
I'm using Solaris 10 for this.
If I mmap a large file and use madvise with MADV_SEQUENTIAL and
MADV_WILLNEED, then start processing the file, when will the system
discard pages that have been referenced? I guess what I'm wondering is
if there is any retention of "back" pages?
Say for example I start reading the file, and after consuming 24,576
bytes, will the first or second pages still be in memory (assuming
8192 byte pages)?
Thanks!
In general it means that the file is mapped into virtual memory. How
much of it remains in actual memory depends upon the memory demands on
the OS at the time. If the sequential and random advice is used by the
OS it is most likely to implement a look ahead for requential access.
Not all OS's pay attention to those advisory settings.
What you are doing is to access the file as if it were an executing
program image. Similar rules apply.
The answer is that you cannot assume that pages you have read are in
actual memory and you cannot assume that they are not. When you access
a page not currently in memory the OS will read it in and find space for
it somehow, maybe by discarding some other page.
This is an excellent way to read files because you avoid one level of
buffer shadowing and get cacheing adjusted to currently available memory.
-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------