Re: [PATCH v4] memcg: add charging of already allocated slab objects

From: Vlastimil Babka
Date: Mon Sep 09 2024 - 04:05:26 EST


On 9/6/24 19:38, Yosry Ahmed wrote:
>> But in case of kmalloc() the allocation must have been still attempted with
>> __GFP_ACCOUNT so a kmalloc-cg cache is used even if the charging fails.
>
> It is still possible that the initial allocation did not have
> __GFP_ACCOUNT, but not from a KMALLOC_NORMAL cache (e.g. KMALLOC_DMA
> or KMALLOC_RECLAIM). In this case kmem_cache_charge() should still
> work, right?

Yeah it would work, but that's rather a corner case implementation detail so
it's better to just require __GFP_ACCOUNT for kmalloc() in the comment.

>>
>> If there's another usage for kmem_cache_charge() where the memcg is
>> available but we don't want to charge immediately on purpose (such as the
>> Linus' idea for struct file), we might need to find another way to tell
>> kmalloc() to use the kmalloc-cg cache but not charge immediately...
>
> Can we just use a dedicated kmem_cache for this instead?

Right, as Shakeel mentioned, that would be the case of struct file. If all
such cases in the future are fine with dedicated cache (i.e. not variable
sized allocations), it should be fine.