mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
ANDROID: vendor_hooks: Add hooks for shrink_active_list
Provide a vendor hook to allow page_referenced to be skipped during shrink_active_list to avoid heavy cpuloading caused by it. Bug: 220878851 Bug: 234405962 Signed-off-by: Liujie Xie <xieliujie@oppo.com> Signed-off-by: Peifeng Li <lipeifeng@oppo.com> Change-Id: Ie0e369f8f8739fea59a95470af20ab0e976869d1
This commit is contained in:
committed by
Carlos Llamas
parent
031e91e83d
commit
6f98ceb358
@@ -209,6 +209,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_cpufreq_transition);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_balance_anon_file_reclaim);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_show_max_freq);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_page_referenced_check_bypass);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_task);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_after_enqueue_task);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_after_dequeue_task);
|
||||
|
||||
@@ -15,6 +15,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_set_balance_anon_file_reclaim,
|
||||
DECLARE_HOOK(android_vh_kswapd_per_node,
|
||||
TP_PROTO(int nid, bool *skip, bool run),
|
||||
TP_ARGS(nid, skip, run));
|
||||
DECLARE_HOOK(android_vh_page_referenced_check_bypass,
|
||||
TP_PROTO(struct page *page, unsigned long nr_to_scan, int lru, bool *bypass),
|
||||
TP_ARGS(page, nr_to_scan, lru, bypass));
|
||||
|
||||
#endif /* _TRACE_HOOK_VMSCAN_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
|
||||
@@ -2377,6 +2377,7 @@ static void shrink_active_list(unsigned long nr_to_scan,
|
||||
unsigned nr_rotated = 0;
|
||||
int file = is_file_lru(lru);
|
||||
struct pglist_data *pgdat = lruvec_pgdat(lruvec);
|
||||
bool bypass = false;
|
||||
|
||||
lru_add_drain();
|
||||
|
||||
@@ -2411,6 +2412,10 @@ static void shrink_active_list(unsigned long nr_to_scan,
|
||||
}
|
||||
}
|
||||
|
||||
trace_android_vh_page_referenced_check_bypass(page, nr_to_scan, lru, &bypass);
|
||||
if (bypass)
|
||||
goto skip_page_referenced;
|
||||
|
||||
if (page_referenced(page, 0, sc->target_mem_cgroup,
|
||||
&vm_flags)) {
|
||||
/*
|
||||
@@ -2428,7 +2433,7 @@ static void shrink_active_list(unsigned long nr_to_scan,
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
skip_page_referenced:
|
||||
ClearPageActive(page); /* we are de-activating */
|
||||
SetPageWorkingset(page);
|
||||
list_add(&page->lru, &l_inactive);
|
||||
|
||||
Reference in New Issue
Block a user