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 7C220C36010 for ; Fri, 4 Apr 2025 17:44:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D86C1280003; Fri, 4 Apr 2025 13:44:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D3431280001; Fri, 4 Apr 2025 13:44:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C25A8280003; Fri, 4 Apr 2025 13:44:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id A181C280001 for ; Fri, 4 Apr 2025 13:44:17 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 4D8EB806BD for ; Fri, 4 Apr 2025 17:44:17 +0000 (UTC) X-FDA: 83297085354.08.E3F5240 Received: from out-171.mta0.migadu.com (out-171.mta0.migadu.com [91.218.175.171]) by imf21.hostedemail.com (Postfix) with ESMTP id 665331C0006 for ; Fri, 4 Apr 2025 17:44:15 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=t5T4Dr7h; spf=pass (imf21.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.171 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743788655; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=hAbFaoCIBrF7ogP+htLpu049h28pPIGGISVjJEaZKxY=; b=zwMUrasBpi0HGoQI0p2Eb8xLfEPxpC+Yse66KPX1sic96pwp7TFLQ/pte/IPY127r7w3IR AEDDzyR2lPmFkQGBgVgG2B18aJsSFq2a8ZeOr6ynBizvFeOKHuLYi0iiaigH0ByjEOqFbO vVc4yamJ04CksKdwWB3thAzfepr3hss= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=t5T4Dr7h; spf=pass (imf21.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.171 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743788655; a=rsa-sha256; cv=none; b=GTOuwHiy/lOlDMbkYV+b7KmJz/cCkVIAF9ub0n1Kb9nPtChrpU/PvEJk3bhFKlTNHaFgT7 uGP/i9JgPfkD0JGxH4jTOWeq+8MrH2FgIflhulZDyj+LBNomYwyVMnIVMmWI3Iiaopsou3 nhMgOJTgLlWb+yll1mCkV3eeBridJOQ= Date: Fri, 4 Apr 2025 10:44:05 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1743788651; h=from:from:reply-to:subject:subject: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=hAbFaoCIBrF7ogP+htLpu049h28pPIGGISVjJEaZKxY=; b=t5T4Dr7hR3euhMs8iUsoJ6+MGtIHU1VIxv/U63uAfrO57mvnJcw6LNWNiDqVWihPttnals ZvJTkKh+1CWvippnlhUsz4G/S+kQO1xFqsE5lz7FjXArsKKR2HqmD1mIBtFk79PSyuOaON 13EPtlEV/WH6cW6D1eewEpMTqbW6/6w= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Shakeel Butt To: Uladzislau Rezki Cc: Andrew Morton , Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, Meta kernel team Subject: Re: [PATCH] memcg: vmalloc: simplify MEMCG_VMALLOC updates Message-ID: References: <20250403053326.26860-1-shakeel.butt@linux.dev> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: 665331C0006 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: qqza7j9ibn34u68kpmd53xnezhxo5tmj X-HE-Tag: 1743788655-173560 X-HE-Meta: U2FsdGVkX1/7+kVU3hTnXpudHnejlFtiWX8Dg7IOwRErryqm+TUpILOt6OpkoBKOlDJplin1RdaTAIEGNUwof0stwjRbPntjlVsqxxJbxPqw0GAEjIX2/OmmQhoYu9l4n9ojafbjWQIndlIREvIigbJSLgJbZmrQ+nL05pAZz2/c9K3jnxGdbHoBpscyST/MwHxRKgN99HMp/ErFpYd3ptXEysfRxGSbzW47wf8tIx+NWLGCY4M+biq+kzSr82coQOfT4F1ulmPuDmyEAlVKTQG7wb31rPPpiXoHSEbcVRtfa0Kvi0UB/K7rCfFl7A2fN/AmXbCdfH6IYMGeLb9GaS53TpKcsmpgNExKLL6HUxAThgvRAwh9ndjJpV29SQz9Bh2RC9r3m4XzVfy/8dE0WN40BQj2He6LsUew6joh8j6ZuqbyqpsPuunwIgQSD6fYV8hd+i5FhvnPjXSPOMdS3WUzhx4jpvvp74IVl5CCkHcioltDXOHytQYNtb721WgS449e7Y6JNyZnyE4ujrCg24RMNwCHyXl272m4tLgzf/oYcjJJ9S4pzpjhALIUG0m/W4FciyKnpxtvTvqCFhXucPKq8l4gbtHE1mASe29aMMHzdJbFB058VNndc1mwThblHqf6LbErVZfdMdrN3DMekmF4JB90vgVGoHeDpLAzg7riHii1otPGBMeuBE/5aF14QeLk96w5vHKxQoFqaCJbZ6f/5hDK3bha4DDhJwPBRaeXJKw+lqbtYbD7jOF5+F3h37adOKjhmzhmME/Ij5CWvurjBoqGDBFmdlOzrbnL8SjolhXKEwmA6ZCPEf4JMY8jxrkRfv+akDA5vcnYhg4QOiIQDXDBk6L+HFtkNIGsNbxQF1aZMfiAn+frmUs99RDpW4Ev1wf6z+SY37v6D6K1GiEf769tUVKfiBVPJydqQmvzJ9tj8dnwJC1pknypqmilmU5nG/pIjgSUJcKvwJB 4meKciEB 0S0ezxuGumYwAzAsxgzbho64uxwIIQPaYOLFcq+HwI5/xD7qVUXDt0BJIxUK5cTu+v0rCzbktegeisYcKZUtQidUmdWYDYoEbsxiFpDbA7lDdHM6IEoKgiyxVbJbnBWOiqsrSfInkr5Tf/RRbpG7s9L0bP6nn3dB76uMs6ERLBj0AcIeBY30k3IYOsHEeJ1brlfoLs8xQZ6nDGYZdwkSmD8pscMFgJFzuTu1bxRZRP7FLjtk= 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 Fri, Apr 04, 2025 at 12:34:33PM +0200, Uladzislau Rezki wrote: > On Thu, Apr 03, 2025 at 11:20:18AM -0700, Shakeel Butt wrote: > > On Thu, Apr 03, 2025 at 01:17:22PM +0200, Uladzislau Rezki wrote: > > > On Wed, Apr 02, 2025 at 10:33:26PM -0700, Shakeel Butt wrote: > > > > The vmalloc region can either be charged to a single memcg or none. At > > > > the moment kernel traverses all the pages backing the vmalloc region to > > > > update the MEMCG_VMALLOC stat. However there is no need to look at all > > > > the pages as all those pages will be charged to a single memcg or none. > > > > Simplify the MEMCG_VMALLOC update by just looking at the first page of > > > > the vmalloc region. > > > > > > > > Signed-off-by: Shakeel Butt > > > > --- > > > > mm/vmalloc.c | 13 +++++-------- > > > > 1 file changed, 5 insertions(+), 8 deletions(-) > > > > > > > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > > > > index 3ed720a787ec..cdae76994488 100644 > > > > --- a/mm/vmalloc.c > > > > +++ b/mm/vmalloc.c > > > > @@ -3370,12 +3370,12 @@ void vfree(const void *addr) > > > > > > > > if (unlikely(vm->flags & VM_FLUSH_RESET_PERMS)) > > > > vm_reset_perms(vm); > > > > + if (vm->nr_pages && !(vm->flags & VM_MAP_PUT_PAGES)) > > > > + mod_memcg_page_state(vm->pages[0], MEMCG_VMALLOC, -vm->nr_pages); > > > > > > > Could you please add a comment stating that the first page should be > > > modified? > > > > > > > Sorry, what do you mean by first page should be modified? > > mod_memcg_page_state() will not modify the page but extract memcg from > > it and modify its vmalloc stat. > > > I meant what you wrote in the commit message. A mod_memcg_page_state() can > be invoked only on a first page within a mapped range, because the rest is > anyway is associated with the same mem_cgroup struct. > > Just add a comment that we do not need to check all pages. Can you add it? Ack. Andrew, please squash the following into the patch. >From 982971062e6bd04feabf4f6a745469cb9bddef03 Mon Sep 17 00:00:00 2001 From: Shakeel Butt Date: Fri, 4 Apr 2025 10:41:52 -0700 Subject: [PATCH] memcg : simplify MEMCG_VMALLOC updates - fix Add comment Signed-off-by: Shakeel Butt --- mm/vmalloc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index cdae76994488..bcc90d4357e4 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -3370,6 +3370,7 @@ void vfree(const void *addr) if (unlikely(vm->flags & VM_FLUSH_RESET_PERMS)) vm_reset_perms(vm); + /* All pages of vm should be charged to same memcg, so use first one. */ if (vm->nr_pages && !(vm->flags & VM_MAP_PUT_PAGES)) mod_memcg_page_state(vm->pages[0], MEMCG_VMALLOC, -vm->nr_pages); for (i = 0; i < vm->nr_pages; i++) { @@ -3671,6 +3672,7 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, node, page_order, nr_small_pages, area->pages); atomic_long_add(area->nr_pages, &nr_vmalloc_pages); + /* All pages of vm should be charged to same memcg, so use first one. */ if (gfp_mask & __GFP_ACCOUNT && area->nr_pages) mod_memcg_page_state(area->pages[0], MEMCG_VMALLOC, area->nr_pages); -- 2.47.1