Bug 97511

Summary: Document vm.overcommit_memory=2 interaction with mmap/mprotect/madvise
Product: Documentation Reporter: Florian Weimer (fweimer)
Component: man-pagesAssignee: documentation_man-pages (documentation_man-pages)
Status: NEW ---    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: Subsystem:
Regression: No Bisected commit-id:

Description Florian Weimer 2015-04-29 15:15:29 UTC
For mmap and MAP_NORESERVE:

In vm.overcommit_memory=2, private mappings still count towards the commit limit, despite what the flag name might imply.

For mmap and PROT_NONE:

Mappings created with this protection flag do not count towards the commit limit in vm.overcommit_memory=2 mode.  mprotect can subsequently be used to change the flags of (parts of) the mapping, to allocate memory as needed, at which point mprotect may fail with ENOMEM.

For mprotect and madvise:

mprotect/madvise cannot be used to mark a previously allocated memory region as unallocated, but reserved, and not have it count towards the vm.overcommit_memory=2 limit.  Instead, use mmap with MAP_FIXED and a PROT_NONE memory area, which will mark the region as unused.