Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx> writes:
As we know, shmem not only supports the sharing of anonymous pages, but also
the RAM-based temporary filesystem. Therefore, shmem swapouts should not be
marked as anonymous swapout statistics. Fix it by adding folio_test_anon().
Fixes: d0f048ac39f6 ("mm: add per-order mTHP anon_swpout and anon_swpout_fallback counters")
Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
---
mm/page_io.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mm/page_io.c b/mm/page_io.c
index 46c603dddf04..b181b81f39e3 100644
--- a/mm/page_io.c
+++ b/mm/page_io.c
@@ -217,7 +217,9 @@ static inline void count_swpout_vm_event(struct folio *folio)
count_memcg_folio_events(folio, THP_SWPOUT, 1);
count_vm_event(THP_SWPOUT);
}
- count_mthp_stat(folio_order(folio), MTHP_STAT_ANON_SWPOUT);
+
+ if (folio_test_anon(folio))
+ count_mthp_stat(folio_order(folio), MTHP_STAT_ANON_SWPOUT);
Do we need to distinguish anonymous swapout and non-anonymous swapout?
IMHO, we don't. Just like we have done for small folio and THP.
If so, how about fix this in another direction? That is, remove "ANON"
from mTHP swapout statistics?