madvise.2: Add MADV_HUGEPAGE and MADV_NOHUGEPAGE

Document the MADV_HUGEPAGE and MADV_NOHUGEPAGE flags added to
madvise() in Linux 2.6.38.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Doug Goldstein 2011-09-19 03:27:54 +02:00 committed by Michael Kerrisk
parent 7f98857ab9
commit e8dd3ed2f1
1 changed files with 34 additions and 0 deletions

View File

@ -211,6 +211,40 @@ KSM unmerges whatever pages it had merged in the address range specified by
.IR addr
and
.IR length .
.TP
.BR MADV_HUGEPAGE " (since Linux 2.6.38)"
Enables Transparent Huge Pages (THP) for pages in the range specified by
.I addr
and
.IR length .
Currently Transparent Huge Pages only work with private anonymous pages (see
.BR mmap (2)).
The kernel will regularly scan the areas marked as huge page candidates
to replace them with huge pages.
The kernel will also allocate huge pages directly when the region is
naturally aligned to the huge page size. (see
.BR posix_memalign (2)).
This feature is primarily aimmed at applications that use large mappings of
data and access large regions of that memory at a time (e.g. virtualization
systems such as qemu).
It can very easily waste memory (e.g. a 2MB mapping that only ever accesses
1 byte will result in 2MB of wired memory instead of one 4KB page).
See the kernel source file
.I Documentation/vm/transhuge.txt
for more details.
The
.BR MADV_HUGEPAGE
and
.BR MADV_NOHUGEPAGE
operations are only available if the kernel was configured with
.BR CONFIG_TRANSPARENT_HUGEPAGE.
.TP
.BR MADV_NOHUGEPAGE " (since Linux 2.6.38)"
Ensures that memory in the address range specified by
.IR addr
and
.IR length
will not be collapsed into huge pages.
.SH "RETURN VALUE"
On success
.BR madvise ()