Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753503Ab2BTLWa (ORCPT ); Mon, 20 Feb 2012 06:22:30 -0500 Received: from e23smtp06.au.ibm.com ([202.81.31.148]:55359 "EHLO e23smtp06.au.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753411Ab2BTLW1 (ORCPT ); Mon, 20 Feb 2012 06:22:27 -0500 From: "Aneesh Kumar K.V" To: linux-mm@kvack.org, mgorman@suse.de, kamezawa.hiroyu@jp.fujitsu.com, dhillf@gmail.com, aarcange@redhat.com, mhocko@suse.cz, akpm@linux-foundation.org, hannes@cmpxchg.org Cc: linux-kernel@vger.kernel.org, cgroups@kernel.org, "Aneesh Kumar K.V" Subject: [PATCH -V1 9/9] hugetlbfs: Add HugeTLB controller documentation Date: Mon, 20 Feb 2012 16:51:42 +0530 Message-Id: <1329736902-26870-10-git-send-email-aneesh.kumar@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.9 In-Reply-To: <1329736902-26870-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> References: <1329736902-26870-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> x-cbid: 12022001-7014-0000-0000-00000099E684 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2866 Lines: 76 From: "Aneesh Kumar K.V" Signed-off-by: Aneesh Kumar K.V --- 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..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 from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/