mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
ANDROID: vendor_hooks: Skip pages with high memory pressure in shrink_active_list
The android_vh_folio_referenced_check_bypass hook reverse-maps and skips pages with high memory pressure in shrink_active_list, preferring to recycle them. This helps reduce memory pressure and improve system performance under high load. Bug: 404067669 Change-Id: Ic10edcef9761df774d6cf18544e7c044bf78d3ed Signed-off-by: Marcus Ma <maminghui5@xiaomi.corp-partner.google.com>
This commit is contained in:
committed by
Treehugger Robot
parent
da6a42c111
commit
2f4537ba6c
@@ -474,3 +474,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmc_gpio_cd_irqt);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_trigger_vendor_lmk_kill);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_trigger_vendor_lmk_kill);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_map_pages_range);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_filemap_map_pages_range);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vprintk_store);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_vprintk_store);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_folio_referenced_check_bypass);
|
||||||
|
|||||||
@@ -79,6 +79,9 @@ DECLARE_HOOK(android_vh_do_folio_trylock,
|
|||||||
DECLARE_HOOK(android_vh_page_referenced_check_bypass,
|
DECLARE_HOOK(android_vh_page_referenced_check_bypass,
|
||||||
TP_PROTO(struct folio *folio, unsigned long nr_to_scan, int lru, bool *bypass),
|
TP_PROTO(struct folio *folio, unsigned long nr_to_scan, int lru, bool *bypass),
|
||||||
TP_ARGS(folio, nr_to_scan, lru, bypass));
|
TP_ARGS(folio, nr_to_scan, lru, bypass));
|
||||||
|
DECLARE_HOOK(android_vh_folio_referenced_check_bypass,
|
||||||
|
TP_PROTO(struct folio *folio, s8 priority, unsigned long nr_to_scan, int lru, bool *bypass),
|
||||||
|
TP_ARGS(folio, priority, nr_to_scan, lru, bypass));
|
||||||
DECLARE_HOOK(android_vh_should_memcg_bypass,
|
DECLARE_HOOK(android_vh_should_memcg_bypass,
|
||||||
TP_PROTO(struct mem_cgroup *memcg, int priority, bool *bypass),
|
TP_PROTO(struct mem_cgroup *memcg, int priority, bool *bypass),
|
||||||
TP_ARGS(memcg, priority, bypass));
|
TP_ARGS(memcg, priority, bypass));
|
||||||
|
|||||||
@@ -2709,6 +2709,8 @@ static void shrink_active_list(unsigned long nr_to_scan,
|
|||||||
}
|
}
|
||||||
|
|
||||||
trace_android_vh_page_referenced_check_bypass(folio, nr_to_scan, lru, &bypass);
|
trace_android_vh_page_referenced_check_bypass(folio, nr_to_scan, lru, &bypass);
|
||||||
|
trace_android_vh_folio_referenced_check_bypass(folio, sc->priority,
|
||||||
|
nr_to_scan, lru, &bypass);
|
||||||
if (bypass)
|
if (bypass)
|
||||||
goto skip_folio_referenced;
|
goto skip_folio_referenced;
|
||||||
trace_android_vh_folio_trylock_set(folio);
|
trace_android_vh_folio_trylock_set(folio);
|
||||||
|
|||||||
Reference in New Issue
Block a user