PROFILE_page_fault_XXX: more detailed page PF profiling

This commit is contained in:
Balazs Gerofi
2017-03-06 20:05:13 +09:00
parent 0dd2fad33b
commit 105d373765
4 changed files with 10 additions and 0 deletions

View File

@ -414,6 +414,9 @@ static void fileobj_do_pageio(void *args0)
if (to_memobj(obj)->flags & MF_ZEROFILL) { if (to_memobj(obj)->flags & MF_ZEROFILL) {
void *virt = phys_to_virt(page_to_phys(page)); void *virt = phys_to_virt(page_to_phys(page));
memset(virt, 0, PAGE_SIZE); memset(virt, 0, PAGE_SIZE);
#ifdef PROFILE_ENABLE
profile_event_add(PROFILE_page_fault_file_clr, PAGE_SIZE);
#endif // PROFILE_ENABLE
} }
else { else {
page->mode = PM_PAGEIO; page->mode = PM_PAGEIO;

View File

@ -33,6 +33,8 @@ struct profile_event {
*/ */
enum profile_event_type { enum profile_event_type {
PROFILE_page_fault = PROFILE_EVENT_MIN, PROFILE_page_fault = PROFILE_EVENT_MIN,
PROFILE_page_fault_anon_clr,
PROFILE_page_fault_file_clr,
PROFILE_mpol_alloc_missed, PROFILE_mpol_alloc_missed,
PROFILE_mmap_anon_contig_phys, PROFILE_mmap_anon_contig_phys,
PROFILE_mmap_anon_no_contig_phys, PROFILE_mmap_anon_no_contig_phys,

View File

@ -1676,6 +1676,9 @@ retry:
} }
dkprintf("%s: clearing 0x%lx:%lu\n", dkprintf("%s: clearing 0x%lx:%lu\n",
__FUNCTION__, pgaddr, pgsize); __FUNCTION__, pgaddr, pgsize);
#ifdef PROFILE_ENABLE
profile_event_add(PROFILE_page_fault_anon_clr, pgsize);
#endif // PROFILE_ENABLE
memset(virt, 0, pgsize); memset(virt, 0, pgsize);
phys = virt_to_phys(virt); phys = virt_to_phys(virt);
if (phys_to_page(phys)) { if (phys_to_page(phys)) {

View File

@ -58,6 +58,8 @@ extern char *syscall_name[];
char *profile_event_names[] = char *profile_event_names[] =
{ {
"page_fault", "page_fault",
"page_fault_anon_clr_mem",
"page_fault_file_clr_mem",
"mpol_alloc_missed", "mpol_alloc_missed",
"mmap_anon_contig_phys", "mmap_anon_contig_phys",
"mmap_anon_no_contig_phys", "mmap_anon_no_contig_phys",