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 <pengzhongcui@xiaomi.corp-partner.google.com>
This commit is contained in:
pengzhongcui
2025-03-30 16:32:27 +08:00
committed by Zhongcui Peng
parent c1fd50266b
commit 4fc6483e90
3 changed files with 6 additions and 0 deletions

View File

@@ -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_try_to_unmap_one);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_slab_bypass); 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);
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_get_page_wmark);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_add_new_anon_rmap); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_add_new_anon_rmap);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_psci_tos_resident_on); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_psci_tos_resident_on);

View File

@@ -21,6 +21,10 @@ DECLARE_HOOK(android_vh_shrink_slab_bypass,
DECLARE_HOOK(android_vh_do_shrink_slab, DECLARE_HOOK(android_vh_do_shrink_slab,
TP_PROTO(struct shrinker *shrinker, long *freeable), TP_PROTO(struct shrinker *shrinker, long *freeable),
TP_ARGS(shrinker, 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, DECLARE_HOOK(android_vh_shrink_node_memcgs,
TP_PROTO(struct mem_cgroup *memcg, bool *skip), TP_PROTO(struct mem_cgroup *memcg, bool *skip),
TP_ARGS(memcg, skip)); TP_ARGS(memcg, skip));

View File

@@ -816,6 +816,7 @@ static unsigned long do_shrink_slab(struct shrink_control *shrinkctl,
freeable = shrinker->count_objects(shrinker, shrinkctl); freeable = shrinker->count_objects(shrinker, shrinkctl);
trace_android_vh_do_shrink_slab(shrinker, &freeable); 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) if (freeable == 0 || freeable == SHRINK_EMPTY)
return freeable; return freeable;