From: Muchun Song <muchun.song@linux.dev>
To: Shakeel Butt <shakeel.butt@linux.dev>
Cc: Roman Gushchin <roman.gushchin@linux.dev>,
Andrew Morton <akpm@linux-foundation.org>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Vlastimil Babka <vbabka@suse.cz>,
David Rientjes <rientjes@google.com>,
Hyeonggon Yoo <42.hyeyoo@gmail.com>,
Eric Dumazet <edumazet@google.com>,
"David S . Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Linux Memory Management List <linux-mm@kvack.org>,
LKML <linux-kernel@vger.kernel.org>,
Meta kernel team <kernel-team@meta.com>,
cgroups@vger.kernel.org, netdev <netdev@vger.kernel.org>
Subject: Re: [PATCH v1] memcg: add charging of already allocated slab objects
Date: Fri, 30 Aug 2024 14:09:57 +0800 [thread overview]
Message-ID: <6088647D-147A-4704-BBA1-8CEDEDAE2885@linux.dev> (raw)
In-Reply-To: <nt5zhccndtrj2pyyjm6wkah4iizzijdamaqce24t7nqioy4c5y@3vtipktwtzkn>
> On Aug 29, 2024, at 23:49, Shakeel Butt <shakeel.butt@linux.dev> wrote:
>
> On Thu, Aug 29, 2024 at 10:36:01AM GMT, Muchun Song wrote:
>>
>>
>>> On Aug 29, 2024, at 03:03, Shakeel Butt <shakeel.butt@linux.dev> wrote:
>>>
>>> Hi Muchun,
>>>
>>> On Wed, Aug 28, 2024 at 10:36:06AM GMT, Muchun Song wrote:
>>>>
>>>>
>>>>> On Aug 28, 2024, at 01:23, Shakeel Butt <shakeel.butt@linux.dev> wrote:
>>>>>
>>> [...]
>>>>>>
>>>>>> Does it handle the case of a too-big-to-be-a-slab-object allocation?
>>>>>> I think it's better to handle it properly. Also, why return false here?
>>>>>>
>>>>>
>>>>> Yes I will fix the too-big-to-be-a-slab-object allocations. I presume I
>>>>> should just follow the kfree() hanlding on !folio_test_slab() i.e. that
>>>>> the given object is the large or too-big-to-be-a-slab-object.
>>>>
>>>> Hi Shakeel,
>>>>
>>>> If we decide to do this, I suppose you will use memcg_kmem_charge_page
>>>> to charge big-object. To be consistent, I suggest renaming kmem_cache_charge
>>>> to memcg_kmem_charge to handle both slab object and big-object. And I saw
>>>> all the functions related to object charging is moved to memcontrol.c (e.g.
>>>> __memcg_slab_post_alloc_hook), so maybe we should also do this for
>>>> memcg_kmem_charge?
>>>>
>>>
>>> If I understand you correctly, you are suggesting to handle the general
>>> kmem charging and slab's large kmalloc (size > KMALLOC_MAX_CACHE_SIZE)
>>> together with memcg_kmem_charge(). However that is not possible due to
>>> slab path updating NR_SLAB_UNRECLAIMABLE_B stats while no updates for
>>> this stat in the general kmem charging path (__memcg_kmem_charge_page in
>>> page allocation code path).
>>>
>>> Also this general kmem charging path is used by many other users like
>>> vmalloc, kernel stack and thus we can not just plainly stuck updates to
>>> NR_SLAB_UNRECLAIMABLE_B in that path.
>>
>> Sorry, maybe I am not clear . To make sure we are on the same page, let
>> me clarify my thought. In your v2, I thought if we can rename
>> kmem_cache_charge() to memcg_kmem_charge() since kmem_cache_charge()
>> already has handled both big-slab-object (size > KMALLOC_MAX_CACHE_SIZE)
>> and small-slab-object cases. You know, we have a function of
>> memcg_kmem_charge_page() which could be used for charging big-slab-object
>> but not small-slab-object. So I thought maybe memcg_kmem_charge() is a
>> good name for it to handle both cases. And if we do this, how about moving
>> this new function to memcontrol.c since all memcg charging functions are
>> moved to memcontrol.c instead of slub.c.
>>
>
> Oh you want the core function to be in memcontrol.c. I don't have any
> strong opinion where the code should exist but I do want the interface
> to still be kmem_cache_charge() because that is what we are providing to
> the users which charging slab objects. Yes some of those might be
> big-slab-objects but that is transparent to the users.
>
> Anyways, for now I will go with my current approach but on the followup
> will explore and discuss with you on which code should exist in which
> file. I hope that is acceptable to you.
Fine. No problem.
Thanks.
>
> thanks,
> Shakeel
next prev parent reply other threads:[~2024-08-30 6:10 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-26 23:29 [PATCH v1] memcg: add charging of already allocated slab objects Shakeel Butt
2024-08-27 3:06 ` Roman Gushchin
2024-08-27 17:23 ` Shakeel Butt
2024-08-28 2:36 ` Muchun Song
2024-08-28 19:03 ` Shakeel Butt
2024-08-29 2:36 ` Muchun Song
2024-08-29 15:49 ` Shakeel Butt
2024-08-30 6:09 ` Muchun Song [this message]
2024-08-27 13:40 ` kernel test robot
2024-08-27 16:03 ` kernel test robot
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=6088647D-147A-4704-BBA1-8CEDEDAE2885@linux.dev \
--to=muchun.song@linux.dev \
--cc=42.hyeyoo@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@meta.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=shakeel.butt@linux.dev \
--cc=vbabka@suse.cz \
/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.