From 7a32e88bab2f0bde89e13ad304b8e35120568f9e Mon Sep 17 00:00:00 2001 From: Sooyong Suk Date: Fri, 27 Sep 2024 14:03:34 +0900 Subject: [PATCH] ANDROID: mm: add vendor hook for direct reclaim We'd like to adjust cpu priority for some processes with lower priority during direct reclaim. Bug: 351175506 Change-Id: Icdb613e99c8455f705d330aa90f65c908d43a6e3 Signed-off-by: Sooyong Suk (cherry picked from commit 6508004f9ff26ee9949403b3dc0dd4ea27ba06f5) Signed-off-by: Ziwei Dai --- drivers/android/vendor_hooks.c | 2 ++ include/trace/hooks/vmscan.h | 6 ++++++ mm/vmscan.c | 3 +++ 3 files changed, 11 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 6f6dda6915eb..9dcb68bb0587 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -440,4 +440,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_vmscan_kswapd_wake); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_vmscan_kswapd_done); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_customize_alloc_gfp); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mm_kcompactd_cpu_online); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_direct_reclaim_begin); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_direct_reclaim_end); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_read_fault); diff --git a/include/trace/hooks/vmscan.h b/include/trace/hooks/vmscan.h index 6f1dec8f5b21..3e6e49aa5ca6 100644 --- a/include/trace/hooks/vmscan.h +++ b/include/trace/hooks/vmscan.h @@ -82,6 +82,12 @@ 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), TP_ARGS(node_id, highest_zoneidx, alloc_order, reclaim_order), 1); +DECLARE_HOOK(android_vh_direct_reclaim_begin, + TP_PROTO(int *prio), + TP_ARGS(prio)); +DECLARE_HOOK(android_vh_direct_reclaim_end, + TP_PROTO(int prio), + TP_ARGS(prio)); #endif /* _TRACE_HOOK_VMSCAN_H */ /* This part must be outside protection */ diff --git a/mm/vmscan.c b/mm/vmscan.c index 97b73ba5f93f..119527bc64e0 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -6653,6 +6653,7 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order, .may_swap = 1, }; bool skip_swap = false; + int prio = 0; /* * scan_control uses s8 fields for order, priority, and reclaim_idx. @@ -6675,9 +6676,11 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order, sc.may_swap = 0; set_task_reclaim_state(current, &sc.reclaim_state); trace_mm_vmscan_direct_reclaim_begin(order, sc.gfp_mask); + trace_android_vh_direct_reclaim_begin(&prio); nr_reclaimed = do_try_to_free_pages(zonelist, &sc); + trace_android_vh_direct_reclaim_end(prio); trace_mm_vmscan_direct_reclaim_end(nr_reclaimed); set_task_reclaim_state(current, NULL);