[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [v2 00/11] PML (Paging Modification Logging) support
This v2 patch series was rebased on latest upstream code. v1->v2: Firstly the sequence of this patch series were adjusted addressing Andrew and Tim's comments: - Put v1 patch 2 (new boot parameter for PML) to be patch 1. - Added a new patch to patch the doc change of new added boot parameter of controlling PML enabling, as patch 2. - Added a new patch to introduce paging_mark_gfn_dirty, and made paging_mark_dirty as a wrapper of it, as patch 3. - Merged v1 patch 1 (EPT A/D bits support) and v1 patch 10 (enabling PML in p2m-ept.c) to a single patch as they both operates on EPT A/D bits, with considering EPT A/D bits will be enabled only when PML is used as well. To me, looks a single patch is more straightforward. The v2 patch series were orginized as following, with detail changes described under each of them. patch 1: Add new boot parameter to control PML enabling - adjusted the sequence of parsing function and boot parameter. patch 2: new patch for adding description for new PML boot parameter - inspired by "iommu=" parameter. patch 3: add new paging_mark_gfn_dirty - Introduced new paging_mark_gfn_dirty, which takes guest pfn as parameter, and made paging_mark_dirty a wrapper of paging_mark_gfn_dirty, commented by Tim. patch 4: PML feature detection - disable opt_pml_enabled if PML is not present, commented by Andrew. patch 5 ~ 9: Add PML support in VMX - changed vmx_*_{enable|disable}_pml, vmx_domain_flush_pml_buffer to be idempotent, commented by Tim. vmx_vcpu_flush_pml_buffer remains the same as it is also called in PML buffer full VMEXIT. - changed vmx_{vcpu|domain}_pml_enabled to return bool_t, with taking const pointer (of vcpu or domain) as parameter, commented by Andrew. - changed vmx_vcpu_flush_pml_buffer calling paging_mark_gfn_dirty instead of paging_mark_dirty, commented by Tim. - changed various coding style issues and did several code refinements commented by Andrew. patch 10: refine log-dirty common code to support PML - removed PML buffer flush callback in log_dirty_domain in paging layer. - changed to call p2m_flush_hardware_cached_dirty directly in hap_track_dirty_vram, and paging_log_dirty_op. patch 11: enable EPT A/D bits and add PML support in p2m-ept.c - Merged EPT A/D bits support with enabling PML in p2m-ept.c as it's more straightforward, with considering EPT A/D bits will only be enabled if PML is used, and both of them operates on EPT A/D bits. - Manually set or clear A/D bits in ept_p2m_type_to_flags, and ept_set_middle_entry, commented by Tim. Several sanity tests of live migration were done, and all tests worked well. I also tested specjbb performance under global log-dirty, by using the same hack mentioned in v1. The result is consistent with v1 (~10% improvement in global log-dirty), and PML is beneficial in reducing hypervisor overhead in log-dirty mode. - global log-dirty: WP PML (v1) PML (v2) 72862 79511 80007 73466 81173 81614 72989 81177 82047 73138 81777 81975 72811 80257 80139 72486 80413 81127 avg 72959 80718 81151 100% 110.63% 111.22% Kai Huang (11): vmx: add new boot parameter to control PML enabling doc: add description for new PML boot parameter log-dirty: add new paging_mark_gfn_dirty vmx: add PML definition and feature detection. vmx: add new data structure member to support PML vmx: add help functions to support PML vmx: handle PML buffer full VMEXIT vmx: handle PML enabling in vmx_vcpu_initialise vmx: disable PML in vmx_vcpu_destroy log-dirty: refine common code to support PML p2m/ept: enable PML in p2m-ept for log-dirty docs/misc/xen-command-line.markdown | 14 +++ xen/arch/x86/hvm/vmx/vmcs.c | 231 ++++++++++++++++++++++++++++++++++++ xen/arch/x86/hvm/vmx/vmx.c | 35 ++++++ xen/arch/x86/mm/hap/hap.c | 29 ++++- xen/arch/x86/mm/p2m-ept.c | 79 ++++++++++-- xen/arch/x86/mm/p2m.c | 36 ++++++ xen/arch/x86/mm/paging.c | 41 +++++-- xen/include/asm-x86/hvm/vmx/vmcs.h | 25 +++- xen/include/asm-x86/hvm/vmx/vmx.h | 4 +- xen/include/asm-x86/p2m.h | 11 ++ xen/include/asm-x86/paging.h | 2 + 11 files changed, 484 insertions(+), 23 deletions(-) -- 2.1.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |