diff --git a/man2/madvise.2 b/man2/madvise.2 index 9f9349c3d..3c1bdcea5 100644 --- a/man2/madvise.2 +++ b/man2/madvise.2 @@ -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 ()