ANDROID: mm: add vendor hook to skip memcg reclaim by priority

Add vendor hook to determine whether a memcg should be recalimed.
Avoid import memcg file pages are frequently reclaimed.

Bug: 369921205
Change-Id: Iac4abcf3a59a9c26ef9895a8f0d35aa6b6c26776
Signed-off-by: yipeng xiang <yipengxiang@honor.corp-partner.google.com>
This commit is contained in:
yipeng xiang
2024-09-27 15:53:28 +08:00
committed by Matthias Männich
parent add3d68602
commit f2b3f5888f
3 changed files with 9 additions and 0 deletions

View File

@@ -425,6 +425,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_read_fault);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_queue_request_and_unlock);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_fuse_request_end);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_read_trylock_failed);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_should_memcg_bypass);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_shmem_swapin_folio);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_wp_page);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_swap_page);

View File

@@ -72,6 +72,9 @@ DECLARE_HOOK(android_vh_do_folio_trylock,
DECLARE_HOOK(android_vh_page_referenced_check_bypass,
TP_PROTO(struct folio *folio, unsigned long nr_to_scan, int lru, bool *bypass),
TP_ARGS(folio, nr_to_scan, lru, bypass));
DECLARE_HOOK(android_vh_should_memcg_bypass,
TP_PROTO(struct mem_cgroup *memcg, int priority, bool *bypass),
TP_ARGS(memcg, priority, bypass));
#endif /* _TRACE_HOOK_VMSCAN_H */
/* This part must be outside protection */
#include <trace/define_trace.h>

View File

@@ -5482,6 +5482,7 @@ static void shrink_many(struct pglist_data *pgdat, struct scan_control *sc)
struct lru_gen_folio *lrugen = NULL;
struct mem_cgroup *memcg;
const struct hlist_nulls_node *pos;
bool bypass = false;
bin = first_bin = get_random_u32_below(MEMCG_NR_BINS);
restart:
@@ -5508,6 +5509,10 @@ restart:
continue;
}
trace_android_vh_should_memcg_bypass(memcg, sc->priority, &bypass);
if (bypass)
continue;
rcu_read_unlock();
op = shrink_one(lruvec, sc);