Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mm/shmem: add mTHP swpout fallback statistics in shmem_writeout()

Currently, when shmem mTHPs are split and swapped out via
shmem_writeout(), there are no unified statistics to trace these mTHP
swpout fallback events. This makes it difficult to analyze the prevalence
of mTHP splitting and fallback during swap operations, which is important
for memory diagnostics.

Here we add statistics counting for mTHP fallback to small pages when
splitting and swapping out in shmem_writeout().

Link: https://lkml.kernel.org/r/20251215024632.250149-1-tongweilin@linux.alibaba.com
Signed-off-by: Weilin Tong <tongweilin@linux.alibaba.com>
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Weilin Tong and committed by
Andrew Morton
bf3480d7 ee628d9c

+12
+12
mm/shmem.c
··· 1593 1593 } 1594 1594 1595 1595 if (split) { 1596 + int order; 1597 + 1596 1598 try_split: 1599 + order = folio_order(folio); 1597 1600 /* Ensure the subpages are still dirty */ 1598 1601 folio_test_set_dirty(folio); 1599 1602 if (split_folio_to_list(folio, folio_list)) 1600 1603 goto redirty; 1604 + 1605 + #ifdef CONFIG_TRANSPARENT_HUGEPAGE 1606 + if (order >= HPAGE_PMD_ORDER) { 1607 + count_memcg_folio_events(folio, THP_SWPOUT_FALLBACK, 1); 1608 + count_vm_event(THP_SWPOUT_FALLBACK); 1609 + } 1610 + #endif 1611 + count_mthp_stat(order, MTHP_STAT_SWPOUT_FALLBACK); 1612 + 1601 1613 folio_clear_dirty(folio); 1602 1614 } 1603 1615