mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
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:
committed by
Matthias Männich
parent
add3d68602
commit
f2b3f5888f
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user