diff options
author | mafetter@fleming.research <mafetter@fleming.research> | 2005-03-14 22:07:47 +0000 |
---|---|---|
committer | mafetter@fleming.research <mafetter@fleming.research> | 2005-03-14 22:07:47 +0000 |
commit | 0150d071ffc76d82edeaf732c2db82cbeef52177 (patch) | |
tree | 3d2f8d03a0d06ad8eb4a9b07f88869553a19b9ac /xen/include/xen/perfc_defn.h | |
parent | d935fccc37786af2f95100170a5de622d21621e9 (diff) | |
download | xen-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.h | 52 |
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") |