From 4fc6483e90c557c879e304ed0f1efe7da9f74975 Mon Sep 17 00:00:00 2001 From: pengzhongcui Date: Sun, 30 Mar 2025 16:32:27 +0800 Subject: [PATCH] ANDROID: vendor_hook: Add hook is to optimize the time consumption of shrink slab. one Vendor hook add: android_vh_do_shrink_slab_ex Add vendor hook point in do_shrink_slab to optimize for user experience related threads and time-consuming shrinkers. Bug: 407420219 Change-Id: I5ee29988eebb53da503f729564946b12deb1d981 Signed-off-by: pengzhongcui --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/vmscan.h | 4 ++++ mm/vmscan.c | 1 + 3 files changed, 6 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 7ceecabcaa38..c73fb1679f93 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -310,6 +310,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmap_region); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_try_to_unmap_one); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_slab_bypass); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_shrink_slab); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_shrink_slab_ex); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_get_page_wmark); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_add_new_anon_rmap); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_psci_tos_resident_on); diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h index 94303994f6d6..991d3365408f 100644 --- a/include/trace/hooks/vmscan.h +++ b/include/trace/hooks/vmscan.h @@ -21,6 +21,10 @@ DECLARE_HOOK(android_vh_shrink_slab_bypass, DECLARE_HOOK(android_vh_do_shrink_slab, TP_PROTO(struct shrinker *shrinker, long *freeable), TP_ARGS(shrinker, freeable)); +DECLARE_HOOK(android_vh_do_shrink_slab_ex, + TP_PROTO(struct shrink_control *shrinkctl, struct shrinker *shrinker, + long *freeable, int priority), + TP_ARGS(shrinkctl, shrinker, freeable, priority)); DECLARE_HOOK(android_vh_shrink_node_memcgs, TP_PROTO(struct mem_cgroup *memcg, bool *skip), TP_ARGS(memcg, skip)); diff --git a/mm/vmscan.c b/mm/vmscan.c index 9dbd8b1ae7a6..4caf03d5ecaa 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -816,6 +816,7 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl, freeable = shrinker->count_objects(shrinker, shrinkctl); trace_android_vh_do_shrink_slab(shrinker, &freeable); + trace_android_vh_do_shrink_slab_ex(shrinkctl, shrinker, &freeable, priority); if (freeable == 0 || freeable == SHRINK_EMPTY) return freeable;