mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +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_queue_request_and_unlock);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_fuse_request_end);
|
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_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_shmem_swapin_folio);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_wp_page);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_wp_page);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_do_swap_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,
|
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_should_memcg_bypass,
|
||||||
|
TP_PROTO(struct mem_cgroup *memcg, int priority, bool *bypass),
|
||||||
|
TP_ARGS(memcg, priority, bypass));
|
||||||
#endif /* _TRACE_HOOK_VMSCAN_H */
|
#endif /* _TRACE_HOOK_VMSCAN_H */
|
||||||
/* This part must be outside protection */
|
/* This part must be outside protection */
|
||||||
#include <trace/define_trace.h>
|
#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 lru_gen_folio *lrugen = NULL;
|
||||||
struct mem_cgroup *memcg;
|
struct mem_cgroup *memcg;
|
||||||
const struct hlist_nulls_node *pos;
|
const struct hlist_nulls_node *pos;
|
||||||
|
bool bypass = false;
|
||||||
|
|
||||||
bin = first_bin = get_random_u32_below(MEMCG_NR_BINS);
|
bin = first_bin = get_random_u32_below(MEMCG_NR_BINS);
|
||||||
restart:
|
restart:
|
||||||
@@ -5508,6 +5509,10 @@ restart:
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trace_android_vh_should_memcg_bypass(memcg, sc->priority, &bypass);
|
||||||
|
if (bypass)
|
||||||
|
continue;
|
||||||
|
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
||||||
op = shrink_one(lruvec, sc);
|
op = shrink_one(lruvec, sc);
|
||||||
|
|||||||
Reference in New Issue
Block a user