Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755644Ab2HUJUo (ORCPT ); Tue, 21 Aug 2012 05:20:44 -0400 Received: from mx2.parallels.com ([64.131.90.16]:37219 "EHLO mx2.parallels.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755491Ab2HUJUb (ORCPT ); Tue, 21 Aug 2012 05:20:31 -0400 Message-ID: <5033521A.9050704@parallels.com> Date: Tue, 21 Aug 2012 13:17:14 +0400 From: Glauber Costa User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120717 Thunderbird/14.0 MIME-Version: 1.0 To: Michal Hocko CC: , , , , Johannes Weiner , Andrew Morton , , Christoph Lameter , David Rientjes , Pekka Enberg , Pekka Enberg , Suleiman Souhlal Subject: Re: [PATCH v2 09/11] memcg: propagate kmem limiting information to children References: <1344517279-30646-1-git-send-email-glommer@parallels.com> <1344517279-30646-10-git-send-email-glommer@parallels.com> <20120817090005.GC18600@dhcp22.suse.cz> <502E0BC3.8090204@parallels.com> <20120817093504.GE18600@dhcp22.suse.cz> <502E17C4.7060204@parallels.com> <20120817103550.GF18600@dhcp22.suse.cz> <502E1E90.1080805@parallels.com> <20120821075430.GA19797@dhcp22.suse.cz> <20120821083501.GC19797@dhcp22.suse.cz> In-Reply-To: <20120821083501.GC19797@dhcp22.suse.cz> Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1676 Lines: 31 On 08/21/2012 12:35 PM, Michal Hocko wrote: > On Tue 21-08-12 09:54:30, Michal Hocko wrote: >> E.g. how do you handle charges you left behind? Say you charged some >> pages for stack? > > I got to the last patch and see how you do it. You are relying on > free_accounted_pages directly which doesn't check kmem_accounted and > uses PageUsed bit instead. So this is correct. I guess you are relying > on the life cycle of the object in general so other types of objects > should be safe as well and there shouldn't be any leaks. It is just that > the memcg life time is not bounded now. Will think about that. > Unless you have a better way, I believe any kind of transversal in the free page path is performance detrimental. So the best way is to be explicit and mark a specific callsite as a memcg free. As for the unbounded time, you are correct. However, I believe it is possible to move a lot of the work we do for free (such as freeing the percpu counters and the css_id itself) to an earlier time. Also, if it ever becomes a problem, it is theoretically possible to avoid this, by tracking the kmem pages in a per-memcg list. We would then transverse such list as we do for user pages, and reparent them. The problem is that this is also a bit space inefficient, since we can't reuse any more fields in page_struct for the list_head, so we'd need an external structure. There is a list_head + a pointer per tracked page. -- 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/