Jiayuan Chen
a45088376d
mm/vmscan: add tracepoint and reason for kswapd_failures reset
Currently, kswapd_failures is reset in multiple places (kswapd, direct
reclaim, PCP freeing, memory-tiers), but there's no way to trace when and
why it was reset, making it difficult to debug memory reclaim issues.
This patch:
1. Introduce kswapd_clear_hopeless() as a wrapper function to
centralize kswapd_failures reset logic.
2. Introduce kswapd_test_hopeless() to encapsulate hopeless node
checks, replacing all open-coded kswapd_failures comparisons.
3. Add kswapd_clear_hopeless_reason enum to distinguish reset sources:
- KSWAPD_CLEAR_HOPELESS_KSWAPD: reset from kswapd context
- KSWAPD_CLEAR_HOPELESS_DIRECT: reset from direct reclaim
- KSWAPD_CLEAR_HOPELESS_PCP: reset from PCP page freeing
- KSWAPD_CLEAR_HOPELESS_OTHER: reset from other paths
4. Add tracepoints for better observability:
- mm_vmscan_kswapd_clear_hopeless: traces each reset with reason
- mm_vmscan_kswapd_reclaim_fail: traces each kswapd reclaim failure
Test results:
$ trace-cmd record -e vmscan:mm_vmscan_kswapd_clear_hopeless -e vmscan:mm_vmscan_kswapd_reclaim_fail
$ # generate memory pressure
$ trace-cmd report
cpus=4
kswapd0-71 [000] 27.216563: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=1
kswapd0-71 [000] 27.217169: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=2
kswapd0-71 [000] 27.217764: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=3
kswapd0-71 [000] 27.218353: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=4
kswapd0-71 [000] 27.218993: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=5
kswapd0-71 [000] 27.219744: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=6
kswapd0-71 [000] 27.220488: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=7
kswapd0-71 [000] 27.221206: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=8
kswapd0-71 [000] 27.221806: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=9
kswapd0-71 [000] 27.222634: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=10
kswapd0-71 [000] 27.223286: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=11
kswapd0-71 [000] 27.223894: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=12
kswapd0-71 [000] 27.224712: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=13
kswapd0-71 [000] 27.225424: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=14
kswapd0-71 [000] 27.226082: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=15
kswapd0-71 [000] 27.226810: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=16
kswapd1-72 [002] 27.386869: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=1
kswapd1-72 [002] 27.387435: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=2
kswapd1-72 [002] 27.388016: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=3
kswapd1-72 [002] 27.388586: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=4
kswapd1-72 [002] 27.389155: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=5
kswapd1-72 [002] 27.389723: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=6
kswapd1-72 [002] 27.390292: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=7
kswapd1-72 [002] 27.392364: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=8
kswapd1-72 [002] 27.392934: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=9
kswapd1-72 [002] 27.393504: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=10
kswapd1-72 [002] 27.394073: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=11
kswapd1-72 [002] 27.394899: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=12
kswapd1-72 [002] 27.395472: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=13
kswapd1-72 [002] 27.396055: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=14
kswapd1-72 [002] 27.396628: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=15
kswapd1-72 [002] 27.397199: mm_vmscan_kswapd_reclaim_fail: nid=1 failures=16
kworker/u18:0-40 [002] 27.410151: mm_vmscan_kswapd_clear_hopeless: nid=0 reason=DIRECT
kswapd0-71 [000] 27.439454: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=1
kswapd0-71 [000] 27.440048: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=2
kswapd0-71 [000] 27.440634: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=3
kswapd0-71 [000] 27.441211: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=4
kswapd0-71 [000] 27.441787: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=5
kswapd0-71 [000] 27.442363: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=6
kswapd0-71 [000] 27.443030: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=7
kswapd0-71 [000] 27.443725: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=8
kswapd0-71 [000] 27.444315: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=9
kswapd0-71 [000] 27.444898: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=10
kswapd0-71 [000] 27.445476: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=11
kswapd0-71 [000] 27.446053: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=12
kswapd0-71 [000] 27.446646: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=13
kswapd0-71 [000] 27.447230: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=14
kswapd0-71 [000] 27.447812: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=15
kswapd0-71 [000] 27.448391: mm_vmscan_kswapd_reclaim_fail: nid=0 failures=16
ann-423 [003] 28.028285: mm_vmscan_kswapd_clear_hopeless: nid=0 reason=PCP
Link: https://lkml.kernel.org/r/20260120024402.387576-3-jiayuan.chen@linux.dev
Signed-off-by: Jiayuan Chen <jiayuan.chen@shopee.com>
Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
Acked-by: Shakeel Butt <shakeel.butt@linux.dev>
Suggested-by: Johannes Weiner <hannes@cmpxchg.org>
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org> [tracing]
Cc: Axel Rasmussen <axelrasmussen@google.com>
Cc: Brendan Jackman <jackmanb@google.com>
Cc: David Hildenbrand <david@kernel.org>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Wei Xu <weixugc@google.com>
Cc: Yuanchu Xie <yuanchu@google.com>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2026-01-31 14:22:38 -08:00
..
2025-11-06 14:19:43 -08:00
2026-01-15 09:52:04 +01:00
2025-11-26 23:29:11 +01:00
2025-11-26 14:20:10 +01:00
2025-12-06 10:15:41 -08:00
2025-12-08 09:38:52 +09:00
2025-12-01 14:39:03 -08:00
2025-11-28 08:43:55 +01:00
2025-11-28 12:58:05 +01:00
2025-12-12 23:59:39 +01:00
2025-12-06 18:34:24 -08:00
2025-12-05 17:01:20 -08:00
2025-11-27 14:24:41 -08:00
2025-11-20 16:29:35 -05:00
2025-11-28 09:31:53 -06:00
2025-12-04 12:19:49 -08:00
2025-11-19 20:32:28 -08:00
2026-01-11 06:09:11 -10:00
2025-11-05 17:38:03 -08:00
2025-11-11 10:01:30 +01:00
2025-11-27 10:41:31 +01:00
2025-12-02 17:03:55 -08:00
2025-11-18 22:26:02 +05:30
2025-12-10 06:38:17 +09:00
2025-11-09 11:24:20 +09:00
2025-11-18 18:55:22 +00:00
2026-01-14 22:16:19 -08:00
2026-01-12 19:17:24 -08:00
2025-11-20 17:23:00 +00:00
2025-12-12 21:52:42 +12:00
2026-01-07 17:07:00 +01:00
2025-12-02 17:24:03 -08:00
2025-12-06 11:13:50 -08:00
2025-12-03 19:45:29 +01:00
2025-12-05 21:29:02 -08:00
2025-12-10 16:07:42 -08:00
2025-11-19 18:34:20 +00:00
2025-12-05 20:41:20 -08:00
2026-01-20 19:24:47 -08:00
2026-01-31 14:22:36 -08:00
2025-11-20 14:03:43 -08:00
2025-11-14 05:09:56 -07:00
2025-12-12 12:36:44 -07:00
2025-11-24 14:15:46 -05:00
2025-11-20 12:14:54 +01:00
2025-12-04 15:43:28 -07:00
2025-11-14 05:09:56 -07:00
2025-11-14 05:09:56 -07:00
2025-12-04 07:19:26 -07:00
2025-11-28 09:09:19 -07:00
2025-11-18 16:20:25 -08:00
2025-11-05 17:31:25 -08:00
2025-11-21 18:34:59 -08:00
2025-11-04 19:10:33 -08:00
2025-12-09 23:29:42 -08:00
2025-11-21 11:21:31 +01:00
2025-11-21 18:42:01 +00:00
2025-11-25 09:17:13 +01:00
2026-01-07 15:11:03 -10:00
2025-12-08 15:32:14 -08:00
2026-01-26 20:02:28 -08:00
2025-12-20 14:47:05 -08:00
2025-12-20 14:47:05 -08:00
2025-12-08 15:32:14 -08:00
2025-11-27 12:03:27 +01:00
2025-12-03 12:42:36 -08:00
2025-11-11 21:47:57 +00:00
2025-11-21 09:42:03 +01:00
2025-11-25 19:01:29 +01:00
2025-12-06 09:01:27 -08:00
2025-11-20 06:57:58 -10:00
2025-11-12 10:00:15 -08:00
2025-11-04 12:36:57 +01:00
2026-01-26 20:02:38 -08:00
2025-12-05 15:25:13 -08:00
2025-11-14 20:34:50 +01:00
2025-11-24 00:02:01 +09:00
2025-11-05 08:07:21 -07:00
2025-11-20 01:18:26 +13:00
2025-11-20 12:02:19 -07:00
2025-11-20 12:02:19 -07:00
2025-12-08 09:40:57 +01:00
2025-11-12 10:00:16 -08:00
2025-12-04 17:10:08 -08:00
2025-11-19 14:08:51 +01:00
2026-01-08 16:52:31 +01:00
2025-11-13 16:27:56 +01:00
2025-11-11 17:38:48 -08:00
2025-12-04 02:00:04 +00:00
2025-11-13 17:10:38 +01:00
2025-12-13 20:04:32 +12:00
2025-12-15 15:20:33 +01:00
2025-12-03 17:24:33 -08:00
2025-12-02 19:57:01 +01:00
2025-11-05 09:51:30 +01:00
2025-11-05 22:51:23 +01:00
2025-12-16 00:57:29 -05:00
2026-01-07 14:52:22 -05:00
2025-12-23 11:23:10 -08:00
2026-01-20 19:24:49 -08:00
2026-01-26 20:02:28 -08:00
2025-11-25 15:16:03 -08:00
2025-11-26 17:21:48 +01:00
2026-01-20 19:24:39 -08:00
2025-11-05 14:56:16 -07:00
2026-01-11 06:09:11 -10:00
2025-12-13 20:35:41 +12:00
2025-11-16 17:28:13 -08:00
2026-01-26 20:02:20 -08:00
2025-11-15 06:18:14 +00:00
2025-11-10 10:38:14 +01:00
2025-11-20 10:25:10 +01:00
2025-11-10 10:38:14 +01:00
2025-11-10 10:38:14 +01:00
2025-11-10 10:38:15 +01:00
2025-11-10 10:38:15 +01:00
2025-11-10 10:38:15 +01:00
2025-11-10 10:38:14 +01:00
2025-11-25 10:28:20 +01:00
2025-12-01 16:45:06 -08:00
2025-11-10 10:52:31 -08:00
2025-11-04 12:36:02 +01:00
2025-12-17 17:24:28 +01:00
2025-12-22 16:19:53 +02:00
2026-01-01 08:16:40 -07:00
2025-11-05 09:08:57 +01:00
2025-12-15 15:17:44 +01:00
2025-12-05 13:52:43 -08:00
2025-11-13 17:05:08 -08:00
2025-11-25 19:45:41 +01:00
2025-11-25 19:45:41 +01:00
2025-12-18 10:43:52 +01:00
2025-12-07 16:15:22 +01:00
2025-12-10 11:16:50 +09:00
2025-11-13 08:34:39 -05:00
2025-11-27 15:45:37 +01:00
2026-01-26 19:03:45 -08:00
2025-11-19 09:19:42 -05:00
2025-11-27 14:24:36 -08:00
2025-12-23 11:23:13 -08:00
2025-11-27 23:56:58 +02:00
2026-01-14 22:16:20 -08:00
2025-11-28 09:20:13 -07:00
2026-01-31 14:22:30 -08:00
2025-11-16 17:27:54 -08:00
2025-11-16 17:27:55 -08:00
2026-01-11 06:09:11 -10:00
2025-11-05 11:03:11 -08:00
2025-11-12 15:29:38 -08:00
2025-12-23 11:23:12 -08:00
2025-12-05 20:41:20 -08:00
2025-11-27 14:24:40 -08:00
2025-12-01 06:56:16 +01:00
2025-12-01 06:56:16 +01:00
2025-12-10 05:58:51 +09:00
2026-01-20 19:24:50 -08:00
2025-11-20 14:03:42 -08:00
2025-11-20 14:03:42 -08:00
2026-01-20 19:24:47 -08:00
2026-01-26 20:02:25 -08:00
2026-01-26 19:03:47 -08:00
2025-12-23 11:23:15 -08:00
2025-12-05 13:52:43 -08:00
2025-11-23 12:30:40 +01:00
2025-11-17 23:45:45 +00:00
2026-01-26 19:03:48 -08:00
2025-11-24 15:08:51 -08:00
2025-11-26 16:56:33 -08:00
2025-12-08 15:32:14 -08:00
2025-11-24 15:08:54 -08:00
2026-01-20 19:24:34 -08:00
2026-01-20 09:34:26 -08:00
2026-01-31 14:22:37 -08:00
2026-01-26 20:02:22 -08:00
2026-01-26 20:02:27 -08:00
2026-01-31 14:22:38 -08:00
2025-11-26 15:17:37 +01:00
2025-11-05 14:08:58 +01:00
2025-12-01 06:51:57 +01:00
2025-12-01 16:13:46 -08:00
2025-11-04 19:10:33 -08:00
2026-01-04 10:26:11 -08:00
2025-11-29 17:23:03 -05:00
2026-01-04 23:03:24 -05:00
2025-11-23 16:01:47 -05:00
2026-01-14 22:16:22 -08:00
2025-11-16 17:28:03 -08:00
2026-01-26 20:02:36 -08:00
2025-11-05 23:58:20 +01:00
2025-11-14 13:10:38 +01:00
2025-11-14 13:10:38 +01:00
2025-11-11 10:01:30 +01:00
2025-12-03 19:42:37 +01:00
2025-11-20 08:32:48 -06:00
2025-12-13 16:26:55 +12:00
2025-11-20 14:03:43 -08:00
2025-11-27 20:18:05 -05:00
2026-01-26 20:02:35 -08:00
2025-11-13 11:01:08 +01:00
2026-01-19 12:30:01 -08:00
2025-11-12 10:00:15 -08:00
2025-11-17 12:04:28 +01:00
2025-11-14 15:06:57 -08:00
2025-11-20 12:02:00 -07:00
2025-11-09 05:13:02 -05:00
2025-11-14 15:06:57 -08:00
2026-01-12 10:45:31 -06:00
2025-11-24 11:45:20 +01:00
2026-01-11 06:09:11 -10:00
2026-01-26 20:02:35 -08:00
2025-11-07 18:53:13 -08:00
2025-12-01 15:08:24 -08:00
2025-11-11 10:01:32 +01:00
2025-11-12 12:18:56 +01:00
2025-12-05 21:29:02 -08:00
2025-11-28 12:03:22 +02:00
2026-01-11 06:09:11 -10:00
2025-11-25 19:01:29 +01:00
2025-11-25 19:01:29 +01:00
2025-12-04 20:38:13 +01:00
2025-11-19 18:06:49 +01:00
2025-12-04 13:50:39 -08:00
2025-11-16 01:35:02 -05:00
2025-12-22 13:32:22 +01:00
2025-12-06 10:15:41 -08:00
2025-11-14 11:56:14 +01:00
2025-11-21 09:42:02 +01:00
2025-11-27 14:24:30 -08:00
2025-12-03 17:24:33 -08:00
2025-12-04 11:16:44 -08:00
2025-11-21 22:35:22 +01:00
2025-11-18 17:52:54 +01:00
2025-11-18 17:52:54 +01:00
2025-12-10 17:21:30 +09:00
2026-01-26 20:02:33 -08:00
2025-12-12 10:26:26 +01:00
2025-11-25 19:45:42 +01:00
2025-11-25 19:45:42 +01:00
2026-01-11 06:09:11 -10:00
2025-11-11 13:18:56 +01:00
2025-11-28 09:21:18 -07:00
2026-01-20 19:24:34 -08:00
2025-12-05 14:36:21 -08:00
2025-12-06 09:53:05 +01:00
2025-12-06 14:01:20 -08:00
2025-11-24 17:23:58 -06:00
2025-11-27 17:41:51 -08:00
2025-12-07 18:09:54 +01:00
2025-11-19 18:06:50 +01:00
2025-12-03 18:58:57 -08:00
2025-11-27 14:22:31 +01:00
2025-11-27 14:22:31 +01:00
2025-11-27 14:22:31 +01:00
2025-11-15 06:18:17 +00:00
2025-11-20 17:57:40 -08:00
2025-12-05 09:11:02 -08:00
2025-11-16 17:28:27 -08:00
2025-11-24 15:08:52 -08:00
2025-11-20 14:03:40 -08:00
2025-11-14 10:01:52 +01:00
2025-11-27 15:45:38 +01:00
2025-11-26 15:16:35 +01:00
2026-01-14 22:16:19 -08:00
2025-11-04 08:35:37 +01:00
2025-11-20 20:17:32 +01:00
2025-12-05 06:42:51 +02:00
2025-12-05 15:17:56 -05:00
2026-01-07 14:52:22 -05:00
2025-11-25 10:07:42 +01:00
2025-12-06 14:01:20 -08:00
2026-01-11 06:09:11 -10:00
2025-11-24 15:08:54 -08:00
2025-11-20 14:03:41 -08:00
2025-12-23 14:07:08 -07:00
2025-11-20 21:20:00 -07:00
2025-11-27 02:03:07 -05:00
2025-12-24 08:02:56 -05:00
2025-11-26 19:45:54 -08:00
2025-11-27 02:03:07 -05:00
2025-12-24 08:02:55 -05:00
2026-01-31 14:22:36 -08:00
2025-11-16 17:27:54 -08:00
2025-11-27 14:24:44 -08:00
2026-01-20 19:24:52 -08:00
2025-11-18 11:18:09 +02:00
2026-01-20 19:24:47 -08:00
2025-11-12 09:38:34 +01:00
2025-11-12 10:00:17 -08:00
2026-01-26 20:02:32 -08:00