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 5D3C0C282EC for ; Fri, 14 Mar 2025 10:10:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D33AD280005; Fri, 14 Mar 2025 06:09:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CE212280001; Fri, 14 Mar 2025 06:09:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B8392280005; Fri, 14 Mar 2025 06:09:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 99C14280001 for ; Fri, 14 Mar 2025 06:09:58 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 71594A9766 for ; Fri, 14 Mar 2025 10:09:59 +0000 (UTC) X-FDA: 83219735718.04.EABA73D Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by imf09.hostedemail.com (Postfix) with ESMTP id 2E1A114000B for ; Fri, 14 Mar 2025 10:09:56 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="lpc9oY/8"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=IMhookhB; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="lpc9oY/8"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=IMhookhB; dmarc=none; spf=pass (imf09.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.131 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741946997; a=rsa-sha256; cv=none; b=lePf2qV++OxHY3liP/iwZ907/jW4VJnXFxttf1QspMwDlUDGr6JHRjn0neRLYUcu9UmnIS qdWVTLYmcHGVlchu4o7EUI7ejgVBKr8b1bWPrtMhuxcUw0Cd9D0myTb09izZrOdT9cDFr+ 9RRY0CMKfiokP91YgSdXd7+wv6+eEZs= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="lpc9oY/8"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=IMhookhB; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="lpc9oY/8"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=IMhookhB; dmarc=none; spf=pass (imf09.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.131 as permitted sender) smtp.mailfrom=vbabka@suse.cz ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741946997; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=kXnVELVgbyUWhUtsRgP+HE2A9luq8SRAoNjEclIW8Kw=; b=uPZHGfpeghTvcro7M4o3UgO1Bn9SnFPorD1Qq+Ewq8YDD5SSY5jt6DQTWLDRRJVi8zQ2OR Rdh/tHEUi3E2ab3/fCe/e+ag38ACVHwWOHBxG005bRTEzhHns+4wWhhSrTPatNIq/RC3SK KfAVFFPOKIO1okQKMgNt01LOGNL0A6s= Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 933AB1F388; Fri, 14 Mar 2025 10:09:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1741946995; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kXnVELVgbyUWhUtsRgP+HE2A9luq8SRAoNjEclIW8Kw=; b=lpc9oY/8VhhdfdQwOx37TTBd7ACoo58hHHoJmmAij+k/UxaYp26dEHq4OTAcaVdb3Odxfk dKFPGEZj+tbHGE25F/eSfMqS2A/NfX8FfeoMdxbbypf9DkpNXtPEGUOKmEeylUnSJQZySN FHt7TnIfAm5fO1iQTEWAYt3ykguCa0I= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1741946995; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kXnVELVgbyUWhUtsRgP+HE2A9luq8SRAoNjEclIW8Kw=; b=IMhookhBwe2k/Xbd3Tpr8al72DMQupgmNX10mRiI/1/FJ4zB93BNENkq1+CtIPjq8ih6Mg /sWdqq+dmK5sZoDg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1741946995; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kXnVELVgbyUWhUtsRgP+HE2A9luq8SRAoNjEclIW8Kw=; b=lpc9oY/8VhhdfdQwOx37TTBd7ACoo58hHHoJmmAij+k/UxaYp26dEHq4OTAcaVdb3Odxfk dKFPGEZj+tbHGE25F/eSfMqS2A/NfX8FfeoMdxbbypf9DkpNXtPEGUOKmEeylUnSJQZySN FHt7TnIfAm5fO1iQTEWAYt3ykguCa0I= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1741946995; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kXnVELVgbyUWhUtsRgP+HE2A9luq8SRAoNjEclIW8Kw=; b=IMhookhBwe2k/Xbd3Tpr8al72DMQupgmNX10mRiI/1/FJ4zB93BNENkq1+CtIPjq8ih6Mg /sWdqq+dmK5sZoDg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 6D91513A31; Fri, 14 Mar 2025 10:09:55 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id pU9wGnMA1GfQXwAAD6G6ig (envelope-from ); Fri, 14 Mar 2025 10:09:55 +0000 Message-ID: <1058dae6-c89b-45ad-83c1-d903fd9532ae@suse.cz> Date: Fri, 14 Mar 2025 11:09:55 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH 05/10] memcg: no refilling stock from obj_cgroup_release Content-Language: en-US To: Shakeel Butt , Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , Sebastian Andrzej Siewior , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team References: <20250314061511.1308152-1-shakeel.butt@linux.dev> <20250314061511.1308152-6-shakeel.butt@linux.dev> From: Vlastimil Babka In-Reply-To: <20250314061511.1308152-6-shakeel.butt@linux.dev> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Queue-Id: 2E1A114000B X-Stat-Signature: xd6zpkx9jseoem9rha1xjwgggg9czasd X-Rspamd-Server: rspam06 X-HE-Tag: 1741946996-217953 X-HE-Meta: U2FsdGVkX181q3BRBGVMNdqqsSbe0hnjtFzpbXlgLfVwG6nsK6DGjnlZQgPYFWNQb/YrLWzQIQ9Y1S+HhzJL5vGIbyKyGqbkYBg0nchzELtRMCig1rsHZirmwDW1YP8DX7iMmIbNHHySPRsCieUVdXUlP+geE2HucXhvcIQ5/D4/A152+QyotPEvJsjjZs14XP5pUDF835UoCtgvIAZ4yO0sDRNWzuUMPZHXD1/9vQ8OZ7p/ECQiTZEgso8J4oFF9Xr5Vgz02QnowgYZXHnl/vIme+9yXXyFtbc0oGKtCV+VO/FVb2GRjWVmE3+OxTU/QwMCGWd1sOfy4qAf0odwF0+dO0cVxcNMu0s+Q2GxxaB8stlsOIneqGUxEb7rk5tEFmKHuGP89AkyFlyByUc0bT+9g3Y7mvDm5gK3uugLbYvcom6+UAcHZmQR//SgLYE9ehjpu54A4Q6IukeE1HqGeIiuB9j8tV/vdHYty5yTlyl+hHUBsUISvBUDQk1AYrOkCBhLpIG5YqKlAr2eohEzAYxXtvqh/D6uGImvjxJq53PRRwJPbYbSbn4Z8nLO1vXOvkO1kW91/dPNgSHloefaweaQQN61YmfxYAsqIa8ffpvVcB7yA7zQy19WrUwo/NFw0EzhTbhAzMiSzSrsXAZaH69T2NBGnzDiImlf3tHqnSrXQQTioFkNoN1R7SnOO2QZJnoQ69i/LtMg1jVUhVFV5YI5S9ijzhXNL3AyG/jGQxsFuj85xIblEWGQgbKxHNslHSkwojPQl/rb0XuqJAVNpys0alO2I4MTNd+DjT0XCCwfWPwSwsSsRMliwqcIBd/e7/mG6Bw1PfQu/+fAg0206MXkNKK/F/RuZASBc3HzXYWbMgN3WKYScqGRLG9QLpgvkbAsgcFVyeQZKAGzewB8wL84ag6t7ZkzynP4s1fcuAFVodoQY9cn9kefmNYyK+5gCFYZ/3rPyP4QQGY4tuB k7rTWLfS QAFJF4sK2UuwN1szfMYIcG7SReiiDyl6ZJBwQAzeohYFd1CbERYIy3nDcGj/Sw4xenJwwqqFXzwFYjax55nUisFA4zS+i0JMU2LvTQkbIMoZmVRJgG1juy5GgeQz7iR04Msav/kh5I6cSA6cvGk4e23BQh4tEw3iUBYzyqXt1tdEEpojnhmDnpWCmB1htV+hMNs7AsAduyBDS/Ga9p+/3cfVc7nA6/tU/gmIxgXRDiS/NBW0P0eRSq6T3bGrAG7Z8gQTlxT2D1qnU0SmbinAl399GltECsIcO9KPfEywUG2eBEH7Ajn87lDp0+8+lyzGisXjpIoLCcUadqxU= 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: List-Subscribe: List-Unsubscribe: On 3/14/25 07:15, Shakeel Butt wrote: > obj_cgroup_release is called when all the references to the objcg has > been released i.e. no more memory objects are pointing to it. Most > probably objcg->memcg will be pointing to some ancestor memcg and at the > moment, in obj_cgroup_release, the kernel call > obj_cgroup_uncharge_pages() to uncharge last remaining memory. > > However obj_cgroup_uncharge_pages() refills the local stock. There is > no need to refill the local stock with some ancestor memcg and flush the > local stock. In addition this removes the requirement to only call > obj_cgroup_put() outside of local_lock. > > Signed-off-by: Shakeel Butt Acked-by: Vlastimil Babka > --- > mm/memcontrol.c | 15 +++++++++++---- > 1 file changed, 11 insertions(+), 4 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 7054b0ebd207..83db180455a1 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -129,8 +129,7 @@ bool mem_cgroup_kmem_disabled(void) > return cgroup_memory_nokmem; > } > > -static void obj_cgroup_uncharge_pages(struct obj_cgroup *objcg, > - unsigned int nr_pages); > +static void memcg_uncharge(struct mem_cgroup *memcg, unsigned int nr_pages); > > static void obj_cgroup_release(struct percpu_ref *ref) > { > @@ -163,8 +162,16 @@ static void obj_cgroup_release(struct percpu_ref *ref) > WARN_ON_ONCE(nr_bytes & (PAGE_SIZE - 1)); > nr_pages = nr_bytes >> PAGE_SHIFT; > > - if (nr_pages) > - obj_cgroup_uncharge_pages(objcg, nr_pages); > + if (nr_pages) { > + struct mem_cgroup *memcg; > + > + memcg = get_mem_cgroup_from_objcg(objcg); > + mod_memcg_state(memcg, MEMCG_KMEM, -nr_pages); > + memcg1_account_kmem(memcg, -nr_pages); > + if (!mem_cgroup_is_root(memcg)) > + memcg_uncharge(memcg, nr_pages); > + css_put(&memcg->css); > + } > > spin_lock_irqsave(&objcg_lock, flags); > list_del(&objcg->list);