Commit | Line | Data |
---|---|---|
585e27ea AK |
1 | HugeTLB Controller |
2 | ------------------- | |
3 | ||
4 | The HugeTLB controller allows to limit the HugeTLB usage per control group and | |
5 | enforces the controller limit during page fault. Since HugeTLB doesn't | |
6 | support page reclaim, enforcing the limit at page fault time implies that, | |
7 | the application will get SIGBUS signal if it tries to access HugeTLB pages | |
8 | beyond its limit. This requires the application to know beforehand how much | |
9 | HugeTLB pages it would require for its use. | |
10 | ||
11 | HugeTLB controller can be created by first mounting the cgroup filesystem. | |
12 | ||
13 | # mount -t cgroup -o hugetlb none /sys/fs/cgroup | |
14 | ||
15 | With the above step, the initial or the parent HugeTLB group becomes | |
16 | visible at /sys/fs/cgroup. At bootup, this group includes all the tasks in | |
17 | the system. /sys/fs/cgroup/tasks lists the tasks in this cgroup. | |
18 | ||
19 | New groups can be created under the parent group /sys/fs/cgroup. | |
20 | ||
21 | # cd /sys/fs/cgroup | |
22 | # mkdir g1 | |
23 | # echo $$ > g1/tasks | |
24 | ||
25 | The above steps create a new group g1 and move the current shell | |
26 | process (bash) into it. | |
27 | ||
28 | Brief summary of control files | |
29 | ||
30 | hugetlb.<hugepagesize>.limit_in_bytes # set/show limit of "hugepagesize" hugetlb usage | |
31 | hugetlb.<hugepagesize>.max_usage_in_bytes # show max "hugepagesize" hugetlb usage recorded | |
32 | hugetlb.<hugepagesize>.usage_in_bytes # show current res_counter usage for "hugepagesize" hugetlb | |
33 | hugetlb.<hugepagesize>.failcnt # show the number of allocation failure due to HugeTLB limit | |
34 | ||
35 | For a system supporting two hugepage size (16M and 16G) the control | |
36 | files include: | |
37 | ||
38 | hugetlb.16GB.limit_in_bytes | |
39 | hugetlb.16GB.max_usage_in_bytes | |
40 | hugetlb.16GB.usage_in_bytes | |
41 | hugetlb.16GB.failcnt | |
42 | hugetlb.16MB.limit_in_bytes | |
43 | hugetlb.16MB.max_usage_in_bytes | |
44 | hugetlb.16MB.usage_in_bytes | |
45 | hugetlb.16MB.failcnt |