-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Aneesh Kumar K.V
authored and
Linus Torvalds
committed
Aug 1, 2012
1 parent
75b5ed6
commit baa6c6b
Showing
2 changed files
with
46 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 8e6ac7fab374816de9a8b0a8fbb02ef761a30ff4 | ||
refs/heads/master: 585e27ea6d2e71d0091443c39a00a35e6a5c5e8f |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
HugeTLB Controller | ||
------------------- | ||
|
||
The HugeTLB controller allows to limit the HugeTLB usage per control group and | ||
enforces the controller limit during page fault. Since HugeTLB doesn't | ||
support page reclaim, enforcing the limit at page fault time implies that, | ||
the application will get SIGBUS signal if it tries to access HugeTLB pages | ||
beyond its limit. This requires the application to know beforehand how much | ||
HugeTLB pages it would require for its use. | ||
|
||
HugeTLB controller can be created by first mounting the cgroup filesystem. | ||
|
||
# mount -t cgroup -o hugetlb none /sys/fs/cgroup | ||
|
||
With the above step, the initial or the parent HugeTLB group becomes | ||
visible at /sys/fs/cgroup. At bootup, this group includes all the tasks in | ||
the system. /sys/fs/cgroup/tasks lists the tasks in this cgroup. | ||
|
||
New groups can be created under the parent group /sys/fs/cgroup. | ||
|
||
# cd /sys/fs/cgroup | ||
# mkdir g1 | ||
# echo $$ > g1/tasks | ||
|
||
The above steps create a new group g1 and move the current shell | ||
process (bash) into it. | ||
|
||
Brief summary of control files | ||
|
||
hugetlb.<hugepagesize>.limit_in_bytes # set/show limit of "hugepagesize" hugetlb usage | ||
hugetlb.<hugepagesize>.max_usage_in_bytes # show max "hugepagesize" hugetlb usage recorded | ||
hugetlb.<hugepagesize>.usage_in_bytes # show current res_counter usage for "hugepagesize" hugetlb | ||
hugetlb.<hugepagesize>.failcnt # show the number of allocation failure due to HugeTLB limit | ||
|
||
For a system supporting two hugepage size (16M and 16G) the control | ||
files include: | ||
|
||
hugetlb.16GB.limit_in_bytes | ||
hugetlb.16GB.max_usage_in_bytes | ||
hugetlb.16GB.usage_in_bytes | ||
hugetlb.16GB.failcnt | ||
hugetlb.16MB.limit_in_bytes | ||
hugetlb.16MB.max_usage_in_bytes | ||
hugetlb.16MB.usage_in_bytes | ||
hugetlb.16MB.failcnt |