ANDROID: vendor_hooks:vendor hook for madvise_cold_or_pageout_pte_range.

add vendor hook in madvise_cold_or_pageout_pte_range to control the
pages to be reclaimed more fine-grained.

Bug: 284808098
Signed-off-by: zhouwenhao <zhouwenhao@xiaomi.com>
Change-Id: I298fde436df192cea9b1541d857f3a46808e06f2
This commit is contained in:
zhouwenhao 2023-04-25 11:06:46 +08:00 committed by Suren Baghdasaryan
parent f73aafc29b
commit 87f8c82651
3 changed files with 12 additions and 1 deletions

View file

@ -306,3 +306,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_encrypt_page);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_init_aes_encrypt);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_skip_swap_map_write);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_post_image_save);
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_madvise_cold_pageout_skip);

View file

@ -98,10 +98,12 @@ DECLARE_HOOK(android_vh_si_mem_available_adjust,
DECLARE_HOOK(android_vh_si_meminfo_adjust,
TP_PROTO(unsigned long *totalram, unsigned long *freeram),
TP_ARGS(totalram, freeram));
DECLARE_RESTRICTED_HOOK(android_rvh_ctl_dirty_rate,
TP_PROTO(void *unused),
TP_ARGS(unused), 1);
DECLARE_HOOK(android_vh_madvise_cold_pageout_skip,
TP_PROTO(struct vm_area_struct *vma, struct page *page, bool pageout, bool *need_skip),
TP_ARGS(vma, page, pageout, need_skip));
struct mem_cgroup;
DECLARE_HOOK(android_vh_mem_cgroup_alloc,

View file

@ -438,6 +438,8 @@ regular_page:
flush_tlb_batched_pending(mm);
arch_enter_lazy_mmu_mode();
for (; addr < end; pte++, addr += PAGE_SIZE) {
bool need_skip = false;
ptent = *pte;
if (pte_none(ptent))
@ -454,6 +456,12 @@ regular_page:
if (!page || is_zone_device_page(page))
continue;
trace_android_vh_madvise_cold_pageout_skip(vma, page, pageout,
&need_skip);
if (need_skip)
continue;
/*
* Creating a THP page is expensive so split it only if we
* are sure it's worth. Split it if we are only owner.