HvExtCallQueryCapabilities and HvExtCallGetBootZeroedMemory implementation in KVM for Windows guest

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Vitaly, Yury, Sunil, Tianyu

Before I work on a patch series and send it out to the KVM mailing
list, I wanted to check with you a potential Windows VM optimization
and see if you have worked on it or if you know about some obvious
known blockers regarding this feature.

Hypervisor Top-Level Functional Specification v6.0b mentions a hypercall:

    HvExtCallGetBootZeroedMemory
    Call Code = 0x8002

This hypercall can be used by Windows guest to know which pages are
already zeroed and then guest can avoid zeroing them again during the
boot, resulting in Windows VM faster boot time and less memory usage.

KVM currently doesn't implement this feature. I am thinking of
implementing it, here is a rough code flow:
1. KVM will set bit 20 in EBX of CPUID leaf 0x40000003 to let the
Windows guest know that it can use the extended hypercall interface.
2. Guest during the boot will use hypercall HvExtCallQueryCapabilities
(Call Code = 0x8001) to see which extended calls are available.
3. KVM will respond to guest that the hypercall
HvExtCallGetBootZeroedMemory is available.
4. Guest will issue the hypercall HvExtCallGetBootZeroedMemory to know
which pages are zeroed.
5. KVM or userspace VMM will respond with GPA and page count to guest.
6. Guest will skip zeroing these pages, resulting in faster boot and
less memory utilization of guest.

This seems like a very easy win for KVM to increase Windows guest boot
performance but I am not sure if I am overlooking something. If you
are aware of any potential side effects of enabling these hypercalls
or some other issue I am not thinking about please let me know,
otherwise, I can start working on this feature and send RFC patches to
the mailing list.

Thanks
Vipin



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux