From: Michal Hocko <mhocko@suse.com>
To: Shakeel Butt <shakeel.butt@linux.dev>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Uladzislau Rezki <urezki@gmail.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Roman Gushchin <roman.gushchin@linux.dev>,
Muchun Song <muchun.song@linux.dev>,
linux-mm@kvack.org, cgroups@vger.kernel.org,
linux-kernel@vger.kernel.org,
Meta kernel team <kernel-team@meta.com>
Subject: Re: [PATCH] memcg: vmalloc: simplify MEMCG_VMALLOC updates
Date: Thu, 3 Apr 2025 09:45:38 +0200 [thread overview]
Message-ID: <Z-48ortj_IhiPxHg@tiehlicka> (raw)
In-Reply-To: <20250403053326.26860-1-shakeel.butt@linux.dev>
On Wed 02-04-25 22:33:26, 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.
I do not rememeber why this was done on page by page but I suspect
originally we could have mixed more memcgs on one vm.
The patch makes sense.
> Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev>
Acked-by: Michal Hocko <mhocko@suse.com>
Thanks!
> ---
> 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);
> for (i = 0; i < vm->nr_pages; i++) {
> struct page *page = vm->pages[i];
>
> BUG_ON(!page);
> - if (!(vm->flags & VM_MAP_PUT_PAGES))
> - mod_memcg_page_state(page, MEMCG_VMALLOC, -1);
> /*
> * High-order allocs for huge vmallocs are split, so
> * can be freed as an array of order-0 allocations
> @@ -3671,12 +3671,9 @@ 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);
> - if (gfp_mask & __GFP_ACCOUNT) {
> - int i;
> -
> - for (i = 0; i < area->nr_pages; i++)
> - mod_memcg_page_state(area->pages[i], MEMCG_VMALLOC, 1);
> - }
> + if (gfp_mask & __GFP_ACCOUNT && area->nr_pages)
> + mod_memcg_page_state(area->pages[0], MEMCG_VMALLOC,
> + area->nr_pages);
>
> /*
> * If not enough pages were obtained to accomplish an
> --
> 2.47.1
--
Michal Hocko
SUSE Labs
next prev parent reply other threads:[~2025-04-03 7:45 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-03 5:33 [PATCH] memcg: vmalloc: simplify MEMCG_VMALLOC updates Shakeel Butt
2025-04-03 7:45 ` Michal Hocko [this message]
2025-04-03 11:17 ` Uladzislau Rezki
2025-04-03 18:20 ` Shakeel Butt
2025-04-04 10:34 ` Uladzislau Rezki
2025-04-04 17:44 ` Shakeel Butt
2025-04-07 9:59 ` Uladzislau Rezki
2025-04-03 16:47 ` Johannes Weiner
2025-04-03 18:23 ` Shakeel Butt
2025-04-22 15:17 ` Yosry Ahmed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z-48ortj_IhiPxHg@tiehlicka \
--to=mhocko@suse.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@meta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=muchun.song@linux.dev \
--cc=roman.gushchin@linux.dev \
--cc=shakeel.butt@linux.dev \
--cc=urezki@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.