From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: linux-mm@kvack.org, kamezawa.hiroyu@jp.fujitsu.com,
mhocko@suse.cz, akpm@linux-foundation.org
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Subject: [PATCH] memcg/hugetlb: Add failcnt support for hugetlb extension
Date: Tue, 22 May 2012 17:13:11 +0530 [thread overview]
Message-ID: <1337686991-26418-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> (raw)
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Expose the failcnt details to userspace similar to memory and memsw.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
---
include/linux/hugetlb.h | 2 +-
mm/memcontrol.c | 40 ++++++++++++++++++++++++++--------------
2 files changed, 27 insertions(+), 15 deletions(-)
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index ee80bc8..cfe3cf5c 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -219,7 +219,7 @@ struct hstate {
unsigned int surplus_huge_pages_node[MAX_NUMNODES];
#ifdef CONFIG_MEM_RES_CTLR_HUGETLB
/* mem cgroup control files */
- struct cftype mem_cgroup_files[4];
+ struct cftype mem_cgroup_files[5];
#endif
char name[HSTATE_NAME_LEN];
};
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index f142ea9..bacb0df 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4189,7 +4189,7 @@ out:
static int mem_cgroup_reset(struct cgroup *cont, unsigned int event)
{
struct mem_cgroup *memcg = mem_cgroup_from_cont(cont);
- int type, name;
+ int type, name, idx;
type = MEMFILE_TYPE(event);
name = MEMFILE_ATTR(event);
@@ -4197,24 +4197,29 @@ static int mem_cgroup_reset(struct cgroup *cont, unsigned int event)
if (!do_swap_account && type == _MEMSWAP)
return -EOPNOTSUPP;
- switch (name) {
- case RES_MAX_USAGE:
- if (type == _MEM)
+ switch (type) {
+ case _MEM:
+ if (name == RES_MAX_USAGE)
res_counter_reset_max(&memcg->res);
- else if (type == _MEMHUGETLB) {
- int idx = MEMFILE_IDX(event);
- res_counter_reset_max(&memcg->hugepage[idx]);
- } else
- res_counter_reset_max(&memcg->memsw);
- break;
- case RES_FAILCNT:
- if (type == _MEM)
+ else
res_counter_reset_failcnt(&memcg->res);
+ break;
+ case _MEMSWAP:
+ if (name == RES_MAX_USAGE)
+ res_counter_reset_max(&memcg->memsw);
else
res_counter_reset_failcnt(&memcg->memsw);
break;
+ case _MEMHUGETLB:
+ idx = MEMFILE_IDX(event);
+ if (name == RES_MAX_USAGE)
+ res_counter_reset_max(&memcg->hugepage[idx]);
+ else
+ res_counter_reset_failcnt(&memcg->hugepage[idx]);
+ break;
+ default:
+ BUG();
}
-
return 0;
}
@@ -5299,8 +5304,15 @@ int __init mem_cgroup_hugetlb_file_init(int idx)
cft->trigger = mem_cgroup_reset;
cft->read = mem_cgroup_read;
- /* NULL terminate the last cft */
+ /* Add the failcntfile */
cft = &h->mem_cgroup_files[3];
+ snprintf(cft->name, MAX_CFTYPE_NAME, "hugetlb.%s.failcnt", buf);
+ cft->private = __MEMFILE_PRIVATE(idx, _MEMHUGETLB, RES_FAILCNT);
+ cft->trigger = mem_cgroup_reset;
+ cft->read = mem_cgroup_read;
+
+ /* NULL terminate the last cft */
+ cft = &h->mem_cgroup_files[4];
memset(cft, 0, sizeof(*cft));
WARN_ON(cgroup_add_cftypes(&mem_cgroup_subsys, h->mem_cgroup_files));
--
1.7.10
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. 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@kvack.org"> email@kvack.org </a>
next reply other threads:[~2012-05-22 12:13 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-22 11:43 Aneesh Kumar K.V [this message]
2012-05-23 23:17 ` Andrew Morton
2012-05-24 4:40 ` Aneesh Kumar K.V
2012-05-24 5:16 ` Andrew Morton
2012-05-24 8:29 ` KAMEZAWA Hiroyuki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1337686991-26418-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com \
--to=aneesh.kumar@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox