From 875969d866779b30314c4a5480dc51b14d42ff0c Mon Sep 17 00:00:00 2001 From: Dezhi Huang Date: Wed, 24 May 2023 16:28:55 +0800 Subject: [PATCH] ANDROID: mm: create vendor hooks for do_shrink_slab() The hook function: trace_android_vh_do_shrink_slab is added inside of the function do_shrink_slab() to changed the numbers of page to be reclaimed from kernel. Bug: 279793370 Change-Id: I7c0b955be97f841c69bc99a152b59ed9823707ed Signed-off-by: Dezhi Huang (cherry picked from commit aa254e44109ec3f608782cb627ede314f9eef0c6) --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/vmscan.h | 3 +++ mm/shrinker.c | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 64d1276d5ade..f3c4a0767d4e 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -188,6 +188,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_oem_binder_struct); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_special_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_buffer_release); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mglru_should_abort_scan); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_shrink_slab); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_check_folio_look_around_ref); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_look_around); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_look_around_migrate_folio); diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h index 4ec21c7cdff7..66d0f3b279a8 100644 --- a/include/trace/hooks/vmscan.h +++ b/include/trace/hooks/vmscan.h @@ -37,6 +37,9 @@ DECLARE_HOOK(android_vh_mglru_should_abort_scan, DECLARE_HOOK(android_vh_should_memcg_bypass, TP_PROTO(struct mem_cgroup *memcg, int priority, bool *bypass), TP_ARGS(memcg, priority, bypass)); +DECLARE_HOOK(android_vh_do_shrink_slab, + TP_PROTO(struct shrinker *shrinker, long *freeable), + TP_ARGS(shrinker, freeable)); #endif /* _TRACE_HOOK_VMSCAN_H */ /* This part must be outside protection */ #include diff --git a/mm/shrinker.c b/mm/shrinker.c index 4a93fd433689..30ea417ec1a2 100644 --- a/mm/shrinker.c +++ b/mm/shrinker.c @@ -5,6 +5,9 @@ #include #include +#undef CREATE_TRACE_POINTS +#include + #include "internal.h" LIST_HEAD(shrinker_list); @@ -382,6 +385,7 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl, long scanned = 0, next_deferred; freeable = shrinker->count_objects(shrinker, shrinkctl); + trace_android_vh_do_shrink_slab(shrinker, &freeable); if (freeable == 0 || freeable == SHRINK_EMPTY) return freeable;