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"