Re: mlock() confusing 1 half of system RAM limit

From: Michal Hocko
Date: Fri Jun 01 2018 - 07:44:33 EST


On Fri 01-06-18 10:53:57, Alex Richman wrote:
> Hi,
>
> I'm seeing a 1/2 of system RAM limit when calling mlock().  mlock(2) says:
> > ENOMEM (Linux 2.4 and earlier) the calling process tried to lock more than
> half of RAM.
> Which implies to me that the 1 half of system RAM limit should be only Linux
> 2.4 and earlier, but I'm running linux 4.4.127 and still seeing the limit.
>
> This is on a system with 66007168 KB total memory, locking 33794621440 bytes
> works, locking 33795653632 bytes does not work.

I assume you are doing mlock on MAP_SHARED resp. on mmap of shmem
file. You are likely to hit the shmem limit. This is half of the
available memory by default.
--
Michal Hocko
SUSE Labs