Re: [PATCH v2 06/28] mm: memcontrol: allocate object cgroup for non-kmem case
From: Qi Zheng
Date: Thu Dec 18 2025 - 01:26:56 EST
On 12/18/25 5:22 AM, Johannes Weiner wrote:
On Wed, Dec 17, 2025 at 03:27:30PM +0800, Qi Zheng wrote:
From: Muchun Song <songmuchun@xxxxxxxxxxxxx>
Pagecache pages are charged at allocation time and hold a reference
to the original memory cgroup until reclaimed. Depending on memory
pressure, page sharing patterns between different cgroups and cgroup
creation/destruction rates, many dying memory cgroups can be pinned
by pagecache pages, reducing page reclaim efficiency and wasting
memory. Converting LRU folios and most other raw memory cgroup pins
to the object cgroup direction can fix this long-living problem.
Not a big deal, but since the coverletter will be preserved in git, I
don't think you need to repeat the full thesis.
Got it.
As a result, the objcg infrastructure is no longer solely applicable
to the kmem case. In this patch, we extend the scope of the objcg
infrastructure beyond the kmem case, enabling LRU folios to reuse
it for folio charging purposes.
"To allow LRU page reparenting, the objcg infrastructure [...]"
OK, will do.
It should be noted that LRU folios are not accounted for at the root
level, yet the folio->memcg_data points to the root_mem_cgroup. Hence,
the folio->memcg_data of LRU folios always points to a valid pointer.
However, the root_mem_cgroup does not possess an object cgroup.
Therefore, we also allocate an object cgroup for the root_mem_cgroup.
Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>
Signed-off-by: Qi Zheng <zhengqi.arch@xxxxxxxxxxxxx>
Reviewed-by: Harry Yoo <harry.yoo@xxxxxxxxxx>
Looks good to me.
Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx>
Thanks!