The patch titled Subject: mm/memcontrol: add per-memcg pgpgin/pswpin counter has been added to the -mm mm-unstable branch. Its filename is mm-memcontrol-add-per-memcg-pgpgin-pswpin-counter.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-memcontrol-add-per-memcg-pgpgin-pswpin-counter.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Jingxiang Zeng <linuszeng@xxxxxxxxxxx> Subject: mm/memcontrol: add per-memcg pgpgin/pswpin counter Date: Fri, 30 Aug 2024 16:22:44 +0800 In proactive memory reclamation scenarios, it is necessary to estimate the pswpin and pswpout metrics of the cgroup to determine whether to continue reclaiming anonymous pages in the current batch. This patch will collect these metrics and expose them. Link: https://lkml.kernel.org/r/20240830082244.156923-1-jingxiangzeng.cas@xxxxxxxxx Signed-off-by: Jingxiang Zeng <linuszeng@xxxxxxxxxxx> Cc: Johannes Weiner <hannes@xxxxxxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxxxxx> Cc: Muchun Song <muchun.song@xxxxxxxxx> Cc: Roman Gushchin <roman.gushchin@xxxxxxxxx> Cc: Shakeel Butt <shakeel.butt@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/memcontrol-v1.c | 2 ++ mm/memcontrol.c | 2 ++ mm/page_io.c | 4 ++++ 3 files changed, 8 insertions(+) --- a/mm/memcontrol.c~mm-memcontrol-add-per-memcg-pgpgin-pswpin-counter +++ a/mm/memcontrol.c @@ -418,6 +418,8 @@ static const unsigned int memcg_vm_event PGPGIN, PGPGOUT, #endif + PSWPIN, + PSWPOUT, PGSCAN_KSWAPD, PGSCAN_DIRECT, PGSCAN_KHUGEPAGED, --- a/mm/memcontrol-v1.c~mm-memcontrol-add-per-memcg-pgpgin-pswpin-counter +++ a/mm/memcontrol-v1.c @@ -2729,6 +2729,8 @@ static const char *const memcg1_stat_nam static const unsigned int memcg1_events[] = { PGPGIN, PGPGOUT, + PSWPIN, + PSWPOUT, PGFAULT, PGMAJFAULT, }; --- a/mm/page_io.c~mm-memcontrol-add-per-memcg-pgpgin-pswpin-counter +++ a/mm/page_io.c @@ -310,6 +310,7 @@ static inline void count_swpout_vm_event } count_mthp_stat(folio_order(folio), MTHP_STAT_SWPOUT); #endif + count_memcg_folio_events(folio, PSWPOUT, folio_nr_pages(folio)); count_vm_events(PSWPOUT, folio_nr_pages(folio)); } @@ -505,6 +506,7 @@ static void sio_read_complete(struct kio for (p = 0; p < sio->pages; p++) { struct folio *folio = page_folio(sio->bvec[p].bv_page); + count_memcg_folio_events(folio, PSWPIN, folio_nr_pages(folio)); folio_mark_uptodate(folio); folio_unlock(folio); } @@ -588,6 +590,7 @@ static void swap_read_folio_bdev_sync(st * attempt to access it in the page fault retry time check. */ get_task_struct(current); + count_memcg_folio_events(folio, PSWPIN, folio_nr_pages(folio)); count_vm_event(PSWPIN); submit_bio_wait(&bio); __end_swap_bio_read(&bio); @@ -603,6 +606,7 @@ static void swap_read_folio_bdev_async(s bio->bi_iter.bi_sector = swap_folio_sector(folio); bio->bi_end_io = end_swap_bio_read; bio_add_folio_nofail(bio, folio, folio_size(folio), 0); + count_memcg_folio_events(folio, PSWPIN, folio_nr_pages(folio)); count_vm_event(PSWPIN); submit_bio(bio); } _ Patches currently in -mm which might be from linuszeng@xxxxxxxxxxx are mm-memcontrol-add-per-memcg-pgpgin-pswpin-counter.patch