On 11.10.2013, at 9:17, Konstantin Belousov <kostik...@gmail.com> wrote:

> 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


24GB


> 2. count of the test files and size of the files

To be precise: I used 57 files with size varied form 74MB to 19GB.
The total size of these files is 270GB.

> 3. which filesystem files are located at


UFS @ SSD drive

> 4. version of the system.


FreeBSD 9.2-PRERELEASE #0 r254880M: Wed Aug 28 11:07:54 MSK 2013
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to