mmap() question

Konstantin Belousov kostikbel at gmail.com
Fri Oct 11 05:17:07 UTC 2013


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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20131011/c1a91a69/attachment.sig>


More information about the freebsd-hackers mailing list