# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Date 1155023423 -32400 # Node ID 2fcc1bf42f245128f0ea5600be77cb946073ab5a # Parent 3fa2d558686ff6de72d7fdfea2dc0f5e5350bcac add perfcounter to mm.c PATCHNAME: perfc_mm_c Signed-off-by: Isaku Yamahata diff -r 3fa2d558686f -r 2fcc1bf42f24 xen/arch/ia64/xen/mm.c --- a/xen/arch/ia64/xen/mm.c Tue Aug 08 16:47:41 2006 +0900 +++ b/xen/arch/ia64/xen/mm.c Tue Aug 08 16:50:23 2006 +0900 @@ -1031,6 +1031,7 @@ assign_domain_page_replace(struct domain put_page(old_page); } } + perfc_incrc(assign_domain_page_replace); } // caller must get_page(new_page) before @@ -1091,6 +1092,7 @@ assign_domain_page_cmpxchg_rel(struct do domain_page_flush(d, mpaddr, old_mfn, new_mfn); put_page(old_page); + perfc_incrc(assign_domain_pge_cmpxchg_rel); return 0; } @@ -1163,6 +1165,7 @@ zap_domain_page_one(struct domain *d, un try_to_clear_PGC_allocate(d, page); } put_page(page); + perfc_incrc(zap_dcomain_page_one); } unsigned long @@ -1175,6 +1178,7 @@ dom0vp_zap_physmap(struct domain *d, uns } zap_domain_page_one(d, gpfn << PAGE_SHIFT, INVALID_MFN); + perfc_incrc(dom0vp_zap_physmap); return 0; } @@ -1220,6 +1224,7 @@ dom0vp_add_physmap(struct domain* d, uns get_gpfn_from_mfn(mfn) != INVALID_M2P_ENTRY); assign_domain_page_replace(d, gpfn << PAGE_SHIFT, mfn, flags); //don't update p2m table because this page belongs to rd, not d. + perfc_incrc(dom0vp_add_physmap); out1: put_domain(rd); return error; @@ -1251,6 +1256,7 @@ create_grant_host_mapping(unsigned long get_gpfn_from_mfn(mfn) != INVALID_M2P_ENTRY); assign_domain_page_replace(d, gpaddr, mfn, (flags & GNTMAP_readonly)? ASSIGN_readonly: ASSIGN_writable); + perfc_incrc(create_grant_host_mapping); return GNTST_okay; } @@ -1310,6 +1316,7 @@ destroy_grant_host_mapping(unsigned long BUG_ON(page_get_owner(page) == d);//try_to_clear_PGC_allocate(d, page) is not needed. put_page(page); + perfc_incrc(destroy_grant_host_mapping); return GNTST_okay; } @@ -1370,6 +1377,7 @@ steal_page(struct domain *d, struct page free_domheap_page(new); return -1; } + perfc_incrc(steal_page_refcount); } spin_lock(&d->page_alloc_lock); @@ -1439,6 +1447,7 @@ steal_page(struct domain *d, struct page list_del(&page->list); spin_unlock(&d->page_alloc_lock); + perfc_incrc(steal_page); return 0; } @@ -1456,6 +1465,8 @@ guest_physmap_add_page(struct domain *d, assign_domain_page_replace(d, gpfn << PAGE_SHIFT, mfn, ASSIGN_writable); //BUG_ON(mfn != ((lookup_domain_mpa(d, gpfn << PAGE_SHIFT) & _PFN_MASK) >> PAGE_SHIFT)); + + perfc_incrc(guest_physmap_add_page); } void @@ -1464,6 +1475,7 @@ guest_physmap_remove_page(struct domain { BUG_ON(mfn == 0);//XXX zap_domain_page_one(d, gpfn << PAGE_SHIFT, mfn); + perfc_incrc(guest_physmap_remove_page); } //XXX sledgehammer. @@ -1476,6 +1488,7 @@ domain_page_flush(struct domain* d, unsi shadow_mark_page_dirty(d, mpaddr >> PAGE_SHIFT); domain_flush_vtlb_all(); + perfc_incrc(domain_page_flush); } int diff -r 3fa2d558686f -r 2fcc1bf42f24 xen/include/asm-ia64/perfc_defn.h --- a/xen/include/asm-ia64/perfc_defn.h Tue Aug 08 16:47:41 2006 +0900 +++ b/xen/include/asm-ia64/perfc_defn.h Tue Aug 08 16:50:23 2006 +0900 @@ -49,3 +49,17 @@ PERFCOUNTER_CPU(domain_flush_vtlb_range, // domain.c PERFCOUNTER_CPU(flush_vtlb_for_context_switch, "flush_vtlb_for_context_switch") + +// mm.c +PERFCOUNTER_CPU(assign_domain_page_replace, "assign_domain_page_replace") +PERFCOUNTER_CPU(assign_domain_pge_cmpxchg_rel, "assign_domain_pge_cmpxchg_rel") +PERFCOUNTER_CPU(zap_dcomain_page_one, "zap_dcomain_page_one") +PERFCOUNTER_CPU(dom0vp_zap_physmap, "dom0vp_zap_physmap") +PERFCOUNTER_CPU(dom0vp_add_physmap, "dom0vp_add_physmap") +PERFCOUNTER_CPU(create_grant_host_mapping, "create_grant_host_mapping") +PERFCOUNTER_CPU(destroy_grant_host_mapping, "destroy_grant_host_mapping") +PERFCOUNTER_CPU(steal_page_refcount, "steal_page_refcount") +PERFCOUNTER_CPU(steal_page, "steal_page") +PERFCOUNTER_CPU(guest_physmap_add_page, "guest_physmap_add_page") +PERFCOUNTER_CPU(guest_physmap_remove_page, "guest_physmap_remove_page") +PERFCOUNTER_CPU(domain_page_flush, "domain_page_flush")