aboutsummaryrefslogtreecommitdiff
path: root/mm
diff options
context:
space:
mode:
authorKiryl Shutsemau (Meta) <kas@kernel.org>2026-10-12 15:30:09 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2026-10-13 04:01:32 -0700
commit549531755d329ec48439e3263535351ba1c5acd5 (patch)
treee56d24e86147e65a8ade3cfe69dee2bfdac279fa /mm
parent82fc13ff3a1e35fdd5e4c83b26877d18a7502511 (diff)
mm: count the runs of the expedite workrcu-free-v3
For observation: the new pgfree_rcu_kick event counts the runs of rcu_free_expedite_workfn() that found folios to free. Each of them calls synchronize_rcu_expedited(). With only hot folios marked it stays at 0 on tmpfs fallocate() and punch-hole loops, and with 9G free. Assisted-by: LLM Signed-off-by: Kiryl Shutsemau (Meta) <kas@kernel.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/page_alloc.c1
-rw-r--r--mm/vmstat.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 1f69c96ae3e0..505dc10e8e30 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1444,6 +1444,7 @@ static void rcu_free_expedite_workfn(struct work_struct *work)
if (list_empty(&list))
return;
+ count_vm_event(PGFREE_RCU_KICK);
synchronize_rcu_expedited();
rcu_free_pages(&list);
}
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 7341c8b4d3fa..8df8a309e736 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1347,6 +1347,7 @@ const char * const vmstat_text[] = {
[I(PGFREE_RCU)] = "pgfree_rcu",
[I(PGFREE_RCU_DONE)] = "pgfree_rcu_done",
[I(PGFREE_RCU_MARK)] = "pgfree_rcu_mark",
+ [I(PGFREE_RCU_KICK)] = "pgfree_rcu_kick",
[I(PGFREE_RCU_DRAIN)] = "pgfree_rcu_drain",
[I(PGFAULT)] = "pgfault",