We count PSWPIN/OUT events via this code path:

  +-> count_memcg_page_event(folio, PSWPIN)
    +-> count_memcg_events(PSWPIN)
      +-> __count_memcg_events(PSWPIN)
        +-> index = memcg_events_index(idx=PSWPIN)
          +-> return mem_cgroup_events_index[idx] - 1
        +-> if (index >= 0)
          +-> __this_cpu_add(memcg->vmstats_percpu->events[i], count)

And before that patch mem_cgroup_events_index[PSWPIN/OUT] was 0, which
is "BAD" and leads to doing nothing.

Fix that by adding PSWPIN/OUT to memcg_vm_event_stat.

One more benefit from this change is that those stats are now also
available in cgroup-v2 memory.stat file. Note though, that cgroup-v2
event stats are printed via memcg_events and cgroup-v1 event stats are
printed via memcg_events_local, so in v2 we have total sum of stats in
all cgroup subdirectories, not just one cgroup.

Fixes: 143b574870cec ("mm: memcontrol: add swapin/out stats")
Signed-off-by: Pavel Tikhomirov <ptikhomi...@virtuozzo.com>
---
 mm/memcontrol.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index bf873cf7b1e28..cd3f0ccdacb7b 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -736,6 +736,8 @@ static const unsigned int memcg_vm_event_stat[] = {
        THP_FAULT_ALLOC,
        THP_COLLAPSE_ALLOC,
 #endif
+       PSWPIN,
+       PSWPOUT,
 };
 
 #define NR_MEMCG_EVENTS ARRAY_SIZE(memcg_vm_event_stat)
-- 
2.50.1

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to