Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Apr 2014 21:52:09 +0400
From:      Dmitry Sivachenko <trtrmitya@gmail.com>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        freebsd-hackers@freebsd.org, =?utf-8?Q?Trond_Endrest=C3=B8l?= <Trond.Endrestol@fagskolen.gjovik.no>
Subject:   Re: madvise() vs posix_fadvise()
Message-ID:  <EF134BCA-1E92-4C98-8763-9A31EA96839A@gmail.com>
In-Reply-To: <201404031102.38598.jhb@freebsd.org>
References:  <D6BD48AF-9522-495D-8D54-37854E53C272@gmail.com> <201403271141.41487.jhb@freebsd.org> <0AF273E6-CD43-417C-A00C-5B7445090D5B@gmail.com> <201404031102.38598.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help


On 03 апр. 2014 г., at 19:02, John Baldwin <jhb@FreeBSD.org> wrote:

>> 
>> Right now I am facing the following problem (stable/10):
>> There is a (home-grown) webserver which mmap's a large amount of data files (total size is a bit below of RAM, say ~90GB of files with 128GB of RAM).
>> Server writes access.log (several gigabytes per day).
>> 
>> Some of mmaped data files are used frequently, some are used rarely. On startup, server walks through all of these data files so it's content is read 
> from disk.
>> 
>> After some time of running, I see that rarely used data files are purged from RAM (access to them leads to long-running disk reads) in favour of disk 
> cache
>> (at 0:00, when I rotate and gzip log file I see Inactive memory goes down to the value of log file size).
>> 
>> Is there any way to tell VM system not to push mmap'ed regions out of RAM in favour of disk caches?
> 
> Use POSIX_FADV_NOREUSE with fadvise() for the log files.  They are a perfect
> use case for this flag.  This will tell the VM system to throw the log data
> (move it to cache) after it writes the file.



Another question is why madvise(MADV_WILLNEED) is not enough to prefer keeping mmap'ed data in memory instead of dedicating all memory to cache log files?
Even if that mmap'ed memory is rarely used.

While POSIX_FADV_NOREUSE might be a solution for some cases (I am already testing it), it needs to be implemented in many programs (all that read/write files on disk), while
madvise(MADV_WILLNEED) sounds like a proper solution to increase priority for mmaped region regardless of what other programs use disk but it does not seem to work as expected.


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?EF134BCA-1E92-4C98-8763-9A31EA96839A>