On Thu, Aug 11, 2022 at 04:19:13PM +0800, liliguang wrote: > From: Li Liguang <liliguang@xxxxxxxxx> > > Kswapd will reclaim memory when memory pressure is high, the > annonymous memory will be compressed and stored in the zpool > if zswap is enabled. The memcg_kmem_bypass() in > get_obj_cgroup_from_page() will bypass the kernel thread and > cause the compressed memory not charged to its memory cgroup. > > Remove the memcg_kmem_bypass() and properly charge compressed > memory to its corresponding memory cgroup. > > Signed-off-by: Li Liguang <liliguang@xxxxxxxxx> > --- > mm/memcontrol.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index b69979c9ced5..6a95ea7c5ee7 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -2971,7 +2971,7 @@ struct obj_cgroup *get_obj_cgroup_from_page(struct page *page) > { > struct obj_cgroup *objcg; > > - if (!memcg_kmem_enabled() || memcg_kmem_bypass()) > + if (!memcg_kmem_enabled()) > return NULL; > > if (PageMemcgKmem(page)) { > -- > 2.32.0 (Apple Git-132) > Hi Li! The fix looks good to me! As we get objcg pointer from a page and not from the current task, memcg_kmem_bypass() doesn't makes much sense. Acked-by: Roman Gushchin <roman.gushchin@xxxxxxxxx> Probably, we need to add Fixes: f4840ccfca25 ("zswap: memcg accounting") Thank you!