|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] x86/HVM: Avoid cache flush operations during hvm_load
On 02/06/15 13:47, Ross Lagerwall wrote:
> An MTRR record is processed for each vCPU during hvm_load. Each MTRR
> record sets several mtrrs, each of which flushes the cache on all pCPUs.
> This can take some time and trip the watchdog for HVM guests with many
> CPUs.
>
> To fix this, introduce a flag which prevents flushing the cache on x86
> while loading the restore records and instead does a single cache flush
> at the end of hvm_load.
>
> This reduces the time to restore an HVM guest with 32 vCPUs by about 5
> seconds on an Intel Xeon CPU E7-2870.
>
> Signed-off-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
> ---
>
> In v2: Code moved into arch hooks since it's x86 specific.
>
> xen/arch/x86/hvm/mtrr.c | 5 +++++
> xen/arch/x86/hvm/save.c | 10 ++++++++++
> xen/common/hvm/save.c | 15 ++++++++++-----
> xen/include/asm-x86/mtrr.h | 9 +++++++++
> xen/include/xen/hvm/save.h | 1 +
> 5 files changed, 35 insertions(+), 5 deletions(-)
>
> diff --git a/xen/arch/x86/hvm/mtrr.c b/xen/arch/x86/hvm/mtrr.c
> index a69ee62..f21b367 100644
> --- a/xen/arch/x86/hvm/mtrr.c
> +++ b/xen/arch/x86/hvm/mtrr.c
> @@ -65,6 +65,8 @@ static const uint8_t
> mm_type_tbl[MTRR_NUM_TYPES][PAT_TYPE_NUMS] = {
> #undef RS
> };
>
> +DEFINE_PER_CPU(bool_t, memory_type_changed_ignore);
Thinking about this, this should be "memory_type_changed_defer" and
there should be a second bool "memory_type_changed_wanted".
This way, we don't suffer a memory_type_changed() in
arch_hvm_load_post() if there were no MTRR records loaded; we support
partial loads of state via this path as well.
~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |