From patchwork Mon Nov 7 15:26:33 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Glauber Costa X-Patchwork-Id: 124103 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 2497CB6F7F for ; Tue, 8 Nov 2011 02:30:47 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932250Ab1KGP3J (ORCPT ); Mon, 7 Nov 2011 10:29:09 -0500 Received: from mailhub.sw.ru ([195.214.232.25]:17447 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755357Ab1KGP3H (ORCPT ); Mon, 7 Nov 2011 10:29:07 -0500 Received: from straightjacket.localdomain ([10.24.20.190]) by relay.sw.ru (8.13.4/8.13.4) with ESMTP id pA7FR3lL028529; Mon, 7 Nov 2011 18:28:15 +0300 (MSK) From: Glauber Costa To: linux-kernel@vger.kernel.org Cc: paul@paulmenage.org, lizf@cn.fujitsu.com, kamezawa.hiroyu@jp.fujitsu.com, ebiederm@xmission.com, davem@davemloft.net, gthelen@google.com, netdev@vger.kernel.org, linux-mm@kvack.org, kirill@shutemov.name, avagin@parallels.com, devel@openvz.org, eric.dumazet@gmail.com, Glauber Costa Subject: [PATCH v5 08/10] Display current tcp memory allocation in kmem cgroup Date: Mon, 7 Nov 2011 13:26:33 -0200 Message-Id: <1320679595-21074-9-git-send-email-glommer@parallels.com> X-Mailer: git-send-email 1.7.6.4 In-Reply-To: <1320679595-21074-1-git-send-email-glommer@parallels.com> References: <1320679595-21074-1-git-send-email-glommer@parallels.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch introduces kmem.tcp.failcnt file, living in the kmem_cgroup filesystem. Following the pattern in the other memcg resources, this files keeps a counter of how many times allocation failed due to limits being hit in this cgroup. The root cgroup will always show a failcnt of 0. Signed-off-by: Glauber Costa CC: David S. Miller CC: Hiroyouki Kamezawa CC: Eric W. Biederman --- mm/memcontrol.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 51b5a55..9394224 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -517,6 +517,7 @@ static int mem_cgroup_write(struct cgroup *cont, struct cftype *cft, const char *buffer); static u64 mem_cgroup_read(struct cgroup *cont, struct cftype *cft); +static int mem_cgroup_reset(struct cgroup *cont, unsigned int event); /* * We need those things internally in pages, so don't reuse * mem_cgroup_{read,write} @@ -533,6 +534,12 @@ static struct cftype tcp_files[] = { .read_u64 = mem_cgroup_read, .private = MEMFILE_PRIVATE(_KMEM_TCP, RES_USAGE), }, + { + .name = "kmem.tcp.failcnt", + .private = MEMFILE_PRIVATE(_KMEM_TCP, RES_FAILCNT), + .trigger = mem_cgroup_reset, + .read_u64 = mem_cgroup_read, + }, }; static void tcp_create_cgroup(struct mem_cgroup *cg, struct cgroup_subsys *ss) @@ -4134,6 +4141,8 @@ static u64 mem_cgroup_read(struct cgroup *cont, struct cftype *cft) if (mem_cgroup_is_root(mem)) { if (name == RES_USAGE) val = atomic_long_read(&tcp_memory_allocated) << PAGE_SHIFT; + else if (name == RES_FAILCNT) + val = 0; else val = RESOURCE_MAX; } else @@ -4251,6 +4260,10 @@ static int mem_cgroup_reset(struct cgroup *cont, unsigned int event) case RES_FAILCNT: if (type == _MEM) res_counter_reset_failcnt(&mem->res); +#if defined(CONFIG_CGROUP_MEM_RES_CTLR_KMEM) && defined(CONFIG_INET) + else if (type == _KMEM_TCP) + res_counter_reset_failcnt(&mem->tcp.tcp_memory_allocated); +#endif else res_counter_reset_failcnt(&mem->memsw); break;