From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9D034C433EF for ; Tue, 1 Feb 2022 10:54:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F1C676B0192; Tue, 1 Feb 2022 05:54:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id EA5096B0193; Tue, 1 Feb 2022 05:54:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D454B6B0194; Tue, 1 Feb 2022 05:54:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0182.hostedemail.com [216.40.44.182]) by kanga.kvack.org (Postfix) with ESMTP id C28CD6B0192 for ; Tue, 1 Feb 2022 05:54:05 -0500 (EST) Received: from smtpin19.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 8072997905 for ; Tue, 1 Feb 2022 10:54:05 +0000 (UTC) X-FDA: 79093901250.19.B34375A Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf27.hostedemail.com (Postfix) with ESMTP id 03BCC40003 for ; Tue, 1 Feb 2022 10:54:04 +0000 (UTC) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id D4F9A1F397; Tue, 1 Feb 2022 10:54:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1643712843; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=YltHOwLKpuO0VC3+4HmnZ1Xi40C0+Rd6appeqUz4Pqw=; b=KnPDIU68LSjnuG+3l0gU/QaHa/lBb7ETO3uVc1U6JBzrQj7PSPiEhew4hexC2uMM+z+HJu q7el6RJgbYzblwGSh2MDgXoWim29tXPX3+93EbPm/j7HbkQHEIB1Oh4Yod2x71/qKbz7In w1HbGSyc53w2Cbd8gWKg4evbUdSD0f4= Received: from suse.cz (unknown [10.100.201.86]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 95CE3A3B81; Tue, 1 Feb 2022 10:54:03 +0000 (UTC) Date: Tue, 1 Feb 2022 11:54:03 +0100 From: Michal Hocko To: Waiman Long Cc: Johannes Weiner , Vladimir Davydov , Andrew Morton , Petr Mladek , Steven Rostedt , Sergey Senozhatsky , Andy Shevchenko , Rasmus Villemoes , linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-mm@kvack.org, Ira Weiny , Mike Rapoport , David Rientjes , Roman Gushchin , Rafael Aquini Subject: Re: [PATCH v3 3/4] mm/page_owner: Print memcg information Message-ID: References: <20220131192308.608837-1-longman@redhat.com> <20220131192308.608837-4-longman@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220131192308.608837-4-longman@redhat.com> X-Rspamd-Queue-Id: 03BCC40003 X-Rspam-User: nil Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=suse.com header.s=susede1 header.b=KnPDIU68; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf27.hostedemail.com: domain of mhocko@suse.com designates 195.135.220.29 as permitted sender) smtp.mailfrom=mhocko@suse.com X-Stat-Signature: tfs6znn9r3qje8p1dq8riwokrtn7dn3z X-Rspamd-Server: rspam08 X-HE-Tag: 1643712844-695107 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon 31-01-22 14:23:07, Waiman Long wrote: > It was found that a number of offlined memcgs were not freed because > they were pinned by some charged pages that were present. Even "echo > 1 > /proc/sys/vm/drop_caches" wasn't able to free those pages. These > offlined but not freed memcgs tend to increase in number over time with > the side effect that percpu memory consumption as shown in /proc/meminfo > also increases over time. > > In order to find out more information about those pages that pin > offlined memcgs, the page_owner feature is extended to print memory > cgroup information especially whether the cgroup is offlined or not. > > Signed-off-by: Waiman Long > Acked-by: David Rientjes > --- > mm/page_owner.c | 39 +++++++++++++++++++++++++++++++++++++++ > 1 file changed, 39 insertions(+) > > diff --git a/mm/page_owner.c b/mm/page_owner.c > index 28dac73e0542..a471c74c7fe0 100644 > --- a/mm/page_owner.c > +++ b/mm/page_owner.c > @@ -10,6 +10,7 @@ > #include > #include > #include > +#include > #include > > #include "internal.h" > @@ -325,6 +326,42 @@ void pagetypeinfo_showmixedcount_print(struct seq_file *m, > seq_putc(m, '\n'); > } > > +#ifdef CONFIG_MEMCG > +/* > + * Looking for memcg information and print it out > + */ > +static inline void print_page_owner_memcg(char *kbuf, size_t count, int *pret, > + struct page *page) > +{ > + unsigned long memcg_data = READ_ONCE(page->memcg_data); > + struct mem_cgroup *memcg; > + bool onlined; > + char name[80]; > + > + if (!memcg_data) > + return; > + > + if (memcg_data & MEMCG_DATA_OBJCGS) > + *pret += scnprintf(kbuf + *pret, count - *pret, > + "Slab cache page\n"); > + > + memcg = page_memcg_check(page); > + if (!memcg) > + return; > + > + onlined = (memcg->css.flags & CSS_ONLINE); > + cgroup_name(memcg->css.cgroup, name, sizeof(name)); > + *pret += scnprintf(kbuf + *pret, count - *pret, > + "Charged %sto %smemcg %s\n", > + PageMemcgKmem(page) ? "(via objcg) " : "", > + onlined ? "" : "offlined ", > + name); I have asked in the previous version already but what makes the memcg stable (why it cannot go away and be reallocated for something else) while you are trying to get its name? -- Michal Hocko SUSE Labs