[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freebsd-hackers
Subject:    Re: mlock() and vm_max_wired
From:       Dmitry Sivachenko <trtrmitya () gmail ! com>
Date:       2014-06-23 10:00:37
Message-ID: C187B4D5-7D29-426F-BF90-06CFB023B702 () gmail ! com
[Download RAW message or body]

On 23 июня 2014 г., at 13:52, Dmitry Sivachenko <trtrmitya@gmail.com> wrote:

> Hello!
> 
> I am using FreeBSD-10/stable and have a problem with mlock().
> I have 256GB of memory and a program which does mmap+mlock on a number of data \
> files.  It can process one file several times (so it does mmap() + mlock() on the \
> same file more than once). I set vm.max_wired=67108864 (67108864 * 4k = 256GB), so \
> it is allowed to mlock() the whole RAM. 
> The total size of all files is about 180GB.
> 
> The program fails with mlock: Resource temporarily unavailable  error.
> 
> If I increase vm.max_wired even more, the program works fine and after it starts \
> top(1) shows about 186GB of Wired memory. 
> Why does it fail with vm.max_wired=67108864?  Is it a bug or am I missing \
> something? 
> Thanks.


Forgot to add the I suspect the following fragment in vm_mmap.c, in vm_mlock() \
function:

if (npages + cnt.v_wire_count > vm_page_max_wired)
                return (EAGAIN);

If we mlock() the same region second time, this condition can be true though after \
mlock() these pages will not increase total locked pages counter. \
_______________________________________________ freebsd-hackers@freebsd.org mailing \
list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic