mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
mm: vmscan: split khugepaged stats from direct reclaim stats
Direct reclaim stats are useful for identifying a potential source for application latency, as well as spotting issues with kswapd. However, khugepaged currently distorts the picture: as a kernel thread it doesn't impose allocation latencies on userspace, and it explicitly opts out of kswapd reclaim. Its activity showing up in the direct reclaim stats is misleading. Counting it as kswapd reclaim could also cause confusion when trying to understand actual kswapd behavior. Break out khugepaged from the direct reclaim counters into new pgsteal_khugepaged, pgdemote_khugepaged, pgscan_khugepaged counters. Test with a huge executable (CONFIG_READ_ONLY_THP_FOR_FS): pgsteal_kswapd 1342185 pgsteal_direct 0 pgsteal_khugepaged 3623 pgscan_kswapd 1345025 pgscan_direct 0 pgscan_khugepaged 3623 Link: https://lkml.kernel.org/r/20221026180133.377671-1-hannes@cmpxchg.org Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Reported-by: Eric Bergen <ebergen@meta.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Yang Shi <shy828301@gmail.com> Cc: Yosry Ahmed <yosryahmed@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
1b01663875
commit
57e9cc50f4
@@ -661,8 +661,10 @@ static const unsigned int memcg_vm_event_stat[] = {
|
||||
PGPGOUT,
|
||||
PGSCAN_KSWAPD,
|
||||
PGSCAN_DIRECT,
|
||||
PGSCAN_KHUGEPAGED,
|
||||
PGSTEAL_KSWAPD,
|
||||
PGSTEAL_DIRECT,
|
||||
PGSTEAL_KHUGEPAGED,
|
||||
PGFAULT,
|
||||
PGMAJFAULT,
|
||||
PGREFILL,
|
||||
@@ -1574,10 +1576,12 @@ static void memory_stat_format(struct mem_cgroup *memcg, char *buf, int bufsize)
|
||||
/* Accumulated memory events */
|
||||
seq_buf_printf(&s, "pgscan %lu\n",
|
||||
memcg_events(memcg, PGSCAN_KSWAPD) +
|
||||
memcg_events(memcg, PGSCAN_DIRECT));
|
||||
memcg_events(memcg, PGSCAN_DIRECT) +
|
||||
memcg_events(memcg, PGSCAN_KHUGEPAGED));
|
||||
seq_buf_printf(&s, "pgsteal %lu\n",
|
||||
memcg_events(memcg, PGSTEAL_KSWAPD) +
|
||||
memcg_events(memcg, PGSTEAL_DIRECT));
|
||||
memcg_events(memcg, PGSTEAL_DIRECT) +
|
||||
memcg_events(memcg, PGSTEAL_KHUGEPAGED));
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(memcg_vm_event_stat); i++) {
|
||||
if (memcg_vm_event_stat[i] == PGPGIN ||
|
||||
|
Reference in New Issue
Block a user