On Wed, Oct 09, 2013 at 03:42:27PM +0400, Dmitry Sivachenko wrote:
> Hello!
> 
> I have a program which mmap()s a lot of large files (total size more that RAM 
> and I have no swap), but it needs only small parts of that files at a time.
> 
> My understanding is that when using mmap when I access some memory region OS 
> reads the relevant portion of that file from disk and caches the result in 
> memory.  If there is no free memory, OS will purge previously read part of 
> mmap'ed file to free memory for the new chunk.
> 
> But this is not the case.  I use the following simple program which gets list 
> of files as command line arguments, mmap()s them all and then selects random 
> file and random 1K parts of that file and computes a XOR of bytes from that 
> region.
> After some time the program dies:
> pid 63251 (a.out), uid 1232, was killed: out of swap space
> 
> It seems I incorrectly understand how mmap() works, can you please clarify 
> what's going wrong?
> 
> I expect that program to run indefinitely, purging some regions out of RAM 
> and reading the relevant parts of files.
> 

You did not specified several very important parameters for your test:
1. total amount of RAM installed
2. count of the test files and size of the files
3. which filesystem files are located at
4. version of the system.

Attachment: pgpu_xJMm2QsF.pgp
Description: PGP signature

Reply via email to