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: 399777353
Bug: 425405860

Change-Id: I63778c73f76930fe27869e33ba6cdb97d50cf543
Signed-off-by: pengzhongcui <pengzhongcui@xiaomi.corp-partner.google.com>
This commit is contained in:
pengzhongcui
2025-06-16 19:21:21 +08:00
committed by Treehugger Robot
parent 30b14cdad4
commit 9651bcfa2a
3 changed files with 8 additions and 2 deletions

View File

@@ -200,6 +200,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ra_tuning_max_page);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_mmap_readaround);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_hw_protection_shutdown);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_slab_bypass);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_shrink_slab_ex);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_drain_all_pages_bypass);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_security_audit_log_setid);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_selinux_avc_insert);

View File

@@ -62,6 +62,10 @@ DECLARE_HOOK(android_vh_should_memcg_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_rebalance_anon_lru_bypass,
TP_PROTO(bool *bypass),
TP_ARGS(bypass));
@@ -83,14 +87,14 @@ DECLARE_HOOK(android_vh_shrink_slab_bypass,
TP_ARGS(gfp_mask, nid, memcg, priority, bypass));
DECLARE_HOOK(android_vh_vmscan_kswapd_done,
TP_PROTO(int node_id, unsigned int highest_zoneidx, unsigned int alloc_order,
unsigned int reclaim_order),
unsigned int reclaim_order),
TP_ARGS(node_id, highest_zoneidx, alloc_order, reclaim_order));
DECLARE_RESTRICTED_HOOK(android_rvh_vmscan_kswapd_wake,
TP_PROTO(int node_id, unsigned int highest_zoneidx, unsigned int alloc_order),
TP_ARGS(node_id, highest_zoneidx, alloc_order), 1);
DECLARE_RESTRICTED_HOOK(android_rvh_vmscan_kswapd_done,
TP_PROTO(int node_id, unsigned int highest_zoneidx, unsigned int alloc_order,
unsigned int reclaim_order),
unsigned int reclaim_order),
TP_ARGS(node_id, highest_zoneidx, alloc_order, reclaim_order), 1);
DECLARE_HOOK(android_vh_direct_reclaim_begin,
TP_PROTO(int *prio),

View File

@@ -386,6 +386,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;