From 7893d1d505d59db9d4f35165c8b6d3c6dff40a32 Mon Sep 17 00:00:00 2001 From: Adam Litke Date: Tue, 16 Oct 2007 01:26:18 -0700 Subject: [PATCH] hugetlb: Try to grow hugetlb pool for MAP_PRIVATE mappings Because we overcommit hugepages for MAP_PRIVATE mappings, it is possible that the hugetlb pool will be exhausted or completely reserved when a hugepage is needed to satisfy a page fault. Before killing the process in this situation, try to allocate a hugepage directly from the buddy allocator. The explicitly configured pool size becomes a low watermark. When dynamically grown, the allocated huge pages are accounted as a surplus over the watermark. As huge pages are freed on a node, surplus pages are released to the buddy allocator so that the pool will shrink back to the watermark. Surplus accounting also allows for friendlier explicit pool resizing. When shrinking a pool that is fully in-use, increase the surplus so pages will be returned to the buddy allocator as soon as they are freed. When growing a pool that has a surplus, consume the surplus first and then allocate new pages. Signed-off-by: Adam Litke Signed-off-by: Mel Gorman Acked-by: Andy Whitcroft Acked-by: Dave McCracken Cc: William Irwin Cc: David Gibson Cc: Ken Chen Cc: Badari Pulavarty Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- Reading git-format-patch failed