aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/xen/perfc_defn.h
diff options
context:
space:
mode:
authormafetter@fleming.research <mafetter@fleming.research>2005-03-14 22:07:47 +0000
committermafetter@fleming.research <mafetter@fleming.research>2005-03-14 22:07:47 +0000
commit0150d071ffc76d82edeaf732c2db82cbeef52177 (patch)
tree3d2f8d03a0d06ad8eb4a9b07f88869553a19b9ac /xen/include/xen/perfc_defn.h
parentd935fccc37786af2f95100170a5de622d21621e9 (diff)
downloadxen-0150d071ffc76d82edeaf732c2db82cbeef52177.tar.gz
xen-0150d071ffc76d82edeaf732c2db82cbeef52177.tar.bz2
xen-0150d071ffc76d82edeaf732c2db82cbeef52177.zip
bitkeeper revision 1.1236.32.2 (42360b33-HudAOddVBt3ez4shMiyOw)
Initial fullshadow checkin. Things still to do: - reuse snapshots intelligently. - minimize tlb flushes during resync. - figure out when to free up no-longer-used L2 shadows, and generally deal with out-of-memory kinds of problems. Some basic guidelines: - With fullshadow on, you can not trust linear_pg_table unless you have first checked whether the VA in which you are interested is out-of-sync or not. - Significant new functions/macros include: page_out_of_sync(mfn): returns true if page is out of sync. shadow_mark_out_of_sync: make a page be out of sync (allocating any necessary snapshots, etc) shadow_out_of_sync(va): returns true if the current mappings involved in va are out-of-sync. shadow_sync_va(): bring the pages involved in mapping a particular va back into sync. Currently calls shadow_sync_all(). shadow_sync_all(): bring all pages back in-sync. Signed-off-by: michael.fetterman@cl.cam.ac.uk
Diffstat (limited to 'xen/include/xen/perfc_defn.h')
-rw-r--r--xen/include/xen/perfc_defn.h52
1 files changed, 36 insertions, 16 deletions
diff --git a/xen/include/xen/perfc_defn.h b/xen/include/xen/perfc_defn.h
index a252af7ac7..895c50e09a 100644
--- a/xen/include/xen/perfc_defn.h
+++ b/xen/include/xen/perfc_defn.h
@@ -1,3 +1,7 @@
+#define VMX_PERF_EXIT_REASON_SIZE 37
+#define VMX_PERF_VECTOR_SIZE 0x20
+PERFCOUNTER_ARRAY(vmexits, "vmexits", VMX_PERF_EXIT_REASON_SIZE )
+PERFCOUNTER_ARRAY(cause_vector, "cause vector", VMX_PERF_VECTOR_SIZE )
PERFCOUNTER_CPU (seg_fixups, "segmentation fixups" )
@@ -17,26 +21,42 @@ PERFCOUNTER_CPU( need_flush_tlb_flush, "PG_need_flush tlb flushes" )
PERFCOUNTER_CPU( calls_to_mmu_update, "calls_to_mmu_update" )
PERFCOUNTER_CPU( num_page_updates, "num_page_updates" )
PERFCOUNTER_CPU( calls_to_update_va, "calls_to_update_va_map" )
-PERFCOUNTER_CPU( page_faults, "page faults" )
-PERFCOUNTER_CPU( copy_user_faults, "copy_user faults" )
PERFCOUNTER_CPU( map_domain_mem_count, "map_domain_mem count" )
-PERFCOUNTER_CPU( shadow_l2_table_count, "shadow_l2_table count" )
-PERFCOUNTER_CPU( shadow_l1_table_count, "shadow_l1_table count" )
-PERFCOUNTER_CPU( unshadow_table_count, "unshadow_table count" )
-PERFCOUNTER_CPU( shadow_fixup_count, "shadow_fixup count" )
-PERFCOUNTER_CPU( shadow_update_va_fail1, "shadow_update_va_fail1" )
-PERFCOUNTER_CPU( shadow_update_va_fail2, "shadow_update_va_fail2" )
+PERFCOUNTER_CPU( shadow_l2_table_count, "shadow_l2_table count" )
+PERFCOUNTER_CPU( shadow_l1_table_count, "shadow_l1_table count" )
+PERFCOUNTER_CPU( shadow_hl2_table_count, "shadow_hl2_table count" )
+PERFCOUNTER_CPU( shadow_set_l1e_force_map, "shadow_set_l1e forced to map l1" )
+PERFCOUNTER_CPU( shadow_set_l1e_unlinked, "shadow_set_l1e found unlinked l1" )
+PERFCOUNTER_CPU( shadow_set_l1e_fail, "shadow_set_l1e failed (no sl1)" )
+PERFCOUNTER_CPU( shadow_invlpg_faults, "shadow_invlpg's get_user faulted")
+
/* STATUS counters do not reset when 'P' is hit */
PERFSTATUS( shadow_l2_pages, "current # shadow L2 pages" )
PERFSTATUS( shadow_l1_pages, "current # shadow L1 pages" )
PERFSTATUS( hl2_table_pages, "current # hl2 pages" )
-
-PERFCOUNTER_CPU( check_pagetable, "calls to check_pagetable" )
-PERFCOUNTER_CPU( check_all_pagetables, "calls to check_all_pagetables" )
-
-#define VMX_PERF_EXIT_REASON_SIZE 37
-#define VMX_PERF_VECTOR_SIZE 0x20
-PERFCOUNTER_ARRAY(vmexits, "vmexits", VMX_PERF_EXIT_REASON_SIZE )
-PERFCOUNTER_ARRAY(cause_vector, "cause vector", VMX_PERF_VECTOR_SIZE )
+PERFSTATUS( snapshot_pages, "current # fshadow snapshot pages" )
+
+PERFCOUNTER_CPU(shadow_status_calls, "calls to __shadow_status" )
+PERFCOUNTER_CPU(shadow_status_miss, "missed shadow cache" )
+PERFCOUNTER_CPU(shadow_status_hit_head, "hits on head of bucket" )
+PERFCOUNTER_CPU(check_pagetable, "calls to check_pagetable" )
+PERFCOUNTER_CPU(check_all_pagetables, "calls to check_all_pagetables" )
+
+PERFCOUNTER_CPU(shadow_sync_all, "calls to shadow_sync_all")
+PERFCOUNTER_CPU(shadow_make_snapshot, "snapshots created")
+PERFCOUNTER_CPU(shadow_mark_mfn_out_of_sync_calls, "calls to shadow_mk_out_of_sync")
+PERFCOUNTER_CPU(shadow_out_of_sync_calls, "calls to shadow_out_of_sync")
+PERFCOUNTER_CPU(snapshot_entry_matches_calls, "calls to ss_entry_matches")
+PERFCOUNTER_CPU(snapshot_entry_matches_true, "ss_entry_matches returns true")
+
+PERFCOUNTER_CPU(page_faults, "page faults" )
+PERFCOUNTER_CPU(copy_user_faults, "copy_user faults" )
+PERFCOUNTER_CPU(shadow_fault_calls, "calls to shadow_fault")
+PERFCOUNTER_CPU(shadow_fault_bail_pde_not_present, "sf bailed due to pde not present")
+PERFCOUNTER_CPU(shadow_fault_bail_pte_not_present, "sf bailed due to pte not present")
+PERFCOUNTER_CPU(shadow_fault_bail_ro_mapping, "sf bailed due to a ro mapping")
+PERFCOUNTER_CPU(shadow_fault_fixed, "sf fixed the pgfault")
+PERFCOUNTER_CPU(validate_pte_change, "calls to validate_pte_change")
+PERFCOUNTER_CPU(validate_pde_change, "calls to validate_pde_change")