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