From: "Aneesh Kumar K.V" <aneesh.kumar@xxxxxxxxxxxxxxxxxx> Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxxxxxxx> --- Documentation/cgroups/hugetlb.txt | 54 +++++++++++++++++++++++++++++++++++++ 1 files changed, 54 insertions(+), 0 deletions(-) create mode 100644 Documentation/cgroups/hugetlb.txt diff --git a/Documentation/cgroups/hugetlb.txt b/Documentation/cgroups/hugetlb.txt new file mode 100644 index 0000000..722aa8e --- /dev/null +++ b/Documentation/cgroups/hugetlb.txt @@ -0,0 +1,54 @@ +HugeTLB controller +----------------- + +The HugetTLB controller is used to group tasks using cgroups and +limit the HugeTLB pages used by these groups of tasks. HugetTLB cgroup +enforce the limit during mmap(2). This enables application to fall back +to allocation using smaller page size if the cgroup resource limit prevented +them from allocating HugeTLB pages. + + +The HugetTLB controller supports multi-hierarchy groups and task migration +across cgroups. + +HugeTLB groups 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 root HugeTLB cgroup 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. HugeTLB +cgroup create seperate limit, usage and max_usage files for each huge page +size supported. An example listing is given below + +hugetlb.16GB.limit_in_bytes +hugetlb.16GB.max_usage_in_bytes +hugetlb.16GB.usage_in_bytes +hugetlb.16MB.limit_in_bytes +hugetlb.16MB.max_usage_in_bytes +hugetlb.16MB.usage_in_bytes + +/sys/fs/cgroup/hugetlb.<pagesize>.usage_in_bytes gives the HugeTLB usage +by this group which is essentially the total size HugeTLB pages obtained +by all the tasks in the system. + +New cgroup can be created under root HugeTLB cgroup /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. 16MB HugeTLB pages consumed by this bash and its +children can be obtained from g1/hugetlb.16MB.usage_in_bytes and the same +is accumulated in /sys/fs/cgroup/hugetlb.16MB.usage_in_bytes. + +We can limit the usage of 16MB hugepage by a hugeTLB cgroup using +hugetlb.16MB.limit_in_bytes + +# echo 16M > /sys/fs/cgroup/g1/hugetlb.16MB.limit_in_bytes +# hugectl --heap=16M /root/heap +libhugetlbfs: WARNING: New heap segment map at 0x20000000000 failed: Cannot allocate memory +# echo -1 > /sys/fs/cgroup/g1/hugetlb.16MB.limit_in_bytes +# hugectl --heap=16M /root/heap +# -- 1.7.9 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>