From e3f469befbe09245787226ff1e15929c5f0a2896 Mon Sep 17 00:00:00 2001 From: Bing Han Date: Mon, 30 May 2022 14:34:16 +0800 Subject: [PATCH] ANDROID: vendor_hooks: Add hooks to madvise_cold_or_pageout_pte_range() Provide a vendor hook android_vh_page_isolated_for_reclaim to process whether the page should be reclaimed to a specified swap(i.e., the expanded memory). This strategy will take into account the state of the current process/application, resource usage, and other information. Bug: 234214858 Signed-off-by: Bing Han Change-Id: Id80a377c87bea13922e7b23963b050ab37ba0cb0 --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/mm.h | 3 +++ mm/madvise.c | 5 ++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 16772e72e2c5..63acb55e9642 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -407,5 +407,6 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_handle_tlb_conf); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shrink_node_memcgs); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ra_tuning_max_page); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tune_memcg_scan_type); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_isolated_for_reclaim); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_inactive_is_low); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_snapshot_refaults); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 11073388847b..37f09cdeba9a 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -149,6 +149,9 @@ DECLARE_HOOK(android_vh_subpage_dma_contig_alloc, DECLARE_HOOK(android_vh_ra_tuning_max_page, TP_PROTO(struct readahead_control *ractl, unsigned long *max_page), TP_ARGS(ractl, max_page)); +DECLARE_HOOK(android_vh_page_isolated_for_reclaim, + TP_PROTO(struct mm_struct *mm, struct page *page), + TP_ARGS(mm, page)); /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_MM_H */ diff --git a/mm/madvise.c b/mm/madvise.c index e54da6abda9f..db54a747d6f3 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -29,6 +29,7 @@ #include #include #include +#include #include @@ -462,8 +463,10 @@ regular_page: if (!isolate_lru_page(page)) { if (PageUnevictable(page)) putback_lru_page(page); - else + else { list_add(&page->lru, &page_list); + trace_android_vh_page_isolated_for_reclaim(mm, page); + } } } else deactivate_page(page);