From 105d373765caf5dad6144fa301f1bbac0e032ea8 Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Mon, 6 Mar 2017 20:05:13 +0900 Subject: [PATCH] PROFILE_page_fault_XXX: more detailed page PF profiling --- kernel/fileobj.c | 3 +++ kernel/include/profile.h | 2 ++ kernel/process.c | 3 +++ kernel/profile.c | 2 ++ 4 files changed, 10 insertions(+) diff --git a/kernel/fileobj.c b/kernel/fileobj.c index 70f11efb..3c0ac50c 100644 --- a/kernel/fileobj.c +++ b/kernel/fileobj.c @@ -414,6 +414,9 @@ static void fileobj_do_pageio(void *args0) if (to_memobj(obj)->flags & MF_ZEROFILL) { void *virt = phys_to_virt(page_to_phys(page)); memset(virt, 0, PAGE_SIZE); +#ifdef PROFILE_ENABLE + profile_event_add(PROFILE_page_fault_file_clr, PAGE_SIZE); +#endif // PROFILE_ENABLE } else { page->mode = PM_PAGEIO; diff --git a/kernel/include/profile.h b/kernel/include/profile.h index ccfac9a7..d2ee8ab2 100644 --- a/kernel/include/profile.h +++ b/kernel/include/profile.h @@ -33,6 +33,8 @@ struct profile_event { */ enum profile_event_type { PROFILE_page_fault = PROFILE_EVENT_MIN, + PROFILE_page_fault_anon_clr, + PROFILE_page_fault_file_clr, PROFILE_mpol_alloc_missed, PROFILE_mmap_anon_contig_phys, PROFILE_mmap_anon_no_contig_phys, diff --git a/kernel/process.c b/kernel/process.c index 3e198f0b..2475a0cf 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -1676,6 +1676,9 @@ retry: } dkprintf("%s: clearing 0x%lx:%lu\n", __FUNCTION__, pgaddr, pgsize); +#ifdef PROFILE_ENABLE + profile_event_add(PROFILE_page_fault_anon_clr, pgsize); +#endif // PROFILE_ENABLE memset(virt, 0, pgsize); phys = virt_to_phys(virt); if (phys_to_page(phys)) { diff --git a/kernel/profile.c b/kernel/profile.c index 61d393bb..49bd9fa2 100644 --- a/kernel/profile.c +++ b/kernel/profile.c @@ -58,6 +58,8 @@ extern char *syscall_name[]; char *profile_event_names[] = { "page_fault", + "page_fault_anon_clr_mem", + "page_fault_file_clr_mem", "mpol_alloc_missed", "mmap_anon_contig_phys", "mmap_anon_no_contig_phys",