Skip to content

hugetlbfs: add min_size filesystem mount option

Mike Kravetz linux-mm lkml 2 versions – New

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v3 Latest4 patches 0 repliesNew
  2. v24 patches 8 repliesSuperseded

Changes in v3 from the cover letter

Struct init and comment cleanup as suggested by Andrew Morton Cleaned up size option argument parsing to hopefully be more clear Fixed kbuild warning introduced in V2
Made documentation more explicit and added descriptions for 'existing' pagesize options and ability to specify size as a percent

Patches in v3 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4hugetlbfs: add minimum size tracking fields to subpool structureinclude/linux/hugetlb.h mm/hugetlb.c+8 -30 replies
2/4hugetlbfs: add minimum size accounting to subpoolsmm/hugetlb.c+100 -230 replies
3/4hugetlbfs: accept subpool min_size mount option and setup accordinglyfs/hugetlbfs/inode.c include/linux/hugetlb.h mm/hugetlb.c+94 -240 replies
4/4hugetlbfs: document min_size mount option and cleanupDocumentation/vm/hugetlbpage.txt+22 -90 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.

Read the v3 thread

Cover letter [PATCH V3 0/4] hugetlbfs: add min_size filesystem mount option

hugetlbfs allocates huge pages from the global pool as needed. Even if the global pool contains a sufficient number pages for the filesystem size at mount time, those global pages could be grabbed for some other use. As a result, filesystem huge page allocations may fail due to lack of pages.

Applications such as a database want to use huge pages for performance reasons. hugetlbfs filesystem semantics with ownership and modes work well to manage access to a pool of huge pages. However, the application would like some reasonable assurance that allocations will not fail due to a lack of huge pages. At application startup time, the application would like to configure itself to use a specific number of huge pages. Before starting, the application can check to make sure that enough huge pages exist in the system global pools. However, there are no guarantees that those pages will be available when needed by the application. What the application wants is exclusive use of a subset of huge pages.

Add a new hugetlbfs mount option 'min_size=<value>' to indicate that the specified number of pages will be available for use by the filesystem. At mount time, this number of huge pages will be reserved for exclusive use of the filesystem. If there is not a sufficient number of free pages, the mount will fail. As pages are allocated to and freeed from the filesystem, the number of reserved pages is adjusted so that the specified minimum is maintained.

V3:
Struct init and comment cleanup as suggested by Andrew Morton Cleaned up size option argument parsing to hopefully be more clear Fixed kbuild warning introduced in V2
Made documentation more explicit and added descriptions for 'existing' pagesize options and ability to specify size as a percent
V2:
Added ability to specify minimum size. Suggsted by David Rientjes
V1:
Comments from RFC addressed/incorporated

Mike Kravetz (4):
hugetlbfs: add minimum size tracking fields to subpool structure
hugetlbfs: add minimum size accounting to subpools
hugetlbfs: accept subpool min_size mount option and setup accordingly
hugetlbfs: document min_size mount option and cleanup

 Documentation/vm/hugetlbpage.txt |  31 +++++---
 fs/hugetlbfs/inode.c             |  90 ++++++++++++++++++-----
 include/linux/hugetlb.h          |  11 ++-
 mm/hugetlb.c                     | 151 +++++++++++++++++++++++++++++++--------
 4 files changed, 224 insertions(+), 59 deletions(-)
Signature · 7 lines
2.1.0

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>