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> (cherry picked from commit 29fd5366b14faf617b4d99c25d04e7f325226396)
This commit is contained in:
committed by
Suren Baghdasaryan
parent
51fe955bf6
commit
c9bbf5834a
@@ -202,6 +202,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_udp_unicast_rcv_skb);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_udp6_unicast_rcv_skb);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_rcv_established_fast_path);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_tcp_rcv_established_slow_path);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_should_memcg_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpu_capacity_show);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_init);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_wake);
|
||||
|
||||
@@ -25,6 +25,9 @@ DECLARE_HOOK(android_vh_mglru_should_abort_scan,
|
||||
TP_PROTO(unsigned long nr_reclaimed, unsigned long nr_to_reclaim,
|
||||
unsigned int order, bool *bypass),
|
||||
TP_ARGS(nr_to_reclaim, nr_reclaimed, order, 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>
|
||||
|
||||
@@ -4877,6 +4877,7 @@ static void shrink_many(struct pglist_data *pgdat, struct scan_control *sc)
|
||||
struct lru_gen_folio *lrugen;
|
||||
struct mem_cgroup *memcg;
|
||||
struct hlist_nulls_node *pos;
|
||||
bool bypass = false;
|
||||
|
||||
gen = get_memcg_gen(READ_ONCE(pgdat->memcg_lru.seq));
|
||||
bin = first_bin = get_random_u32_below(MEMCG_NR_BINS);
|
||||
@@ -4907,6 +4908,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