File virtinst-add-hyperv-performance-options.patch of Package virt-manager
References: bsc#1228227
These additional options if used will improve performance for windows VMs.
vpindex makes sense in conjunction with synic and stimer
synic requires vpindex
stimer requires vpindex and synic
Index: virt-manager-4.1.0/virtinst/domain/features.py
===================================================================
--- virt-manager-4.1.0.orig/virtinst/domain/features.py
+++ virt-manager-4.1.0/virtinst/domain/features.py
@@ -32,7 +32,9 @@ class DomainFeatures(XMLBuilder):
hyperv_spinlocks = XMLProperty("./hyperv/spinlocks/@state", is_onoff=True)
hyperv_spinlocks_retries = XMLProperty("./hyperv/spinlocks/@retries",
is_int=True)
+ hyperv_vpindex = XMLProperty("./hyperv/vpindex/@state", is_onoff=True)
hyperv_synic = XMLProperty("./hyperv/synic/@state", is_onoff=True)
+ hyperv_stimer = XMLProperty("./hyperv/stimer/@state", is_onoff=True)
vmport = XMLProperty("./vmport/@state", is_onoff=True)
kvm_hidden = XMLProperty("./kvm/hidden/@state", is_onoff=True)
@@ -84,3 +86,9 @@ class DomainFeatures(XMLBuilder):
self.hyperv_spinlocks = True
if self.hyperv_spinlocks_retries is None:
self.hyperv_spinlocks_retries = 8191
+ if self.hyperv_vpindex is None:
+ self.hyperv_vpindex = True
+ if self.hyperv_synic is None:
+ self.hyperv_synic = True
+ if self.hyperv_stimer is None:
+ self.hyperv_stimer = True
Index: virt-manager-4.1.0/virtinst/cli.py
===================================================================
--- virt-manager-4.1.0.orig/virtinst/cli.py
+++ virt-manager-4.1.0/virtinst/cli.py
@@ -2989,7 +2989,9 @@ class ParserFeatures(VirtCLIParser):
"hyperv.relaxed.state": "hyperv_relaxed",
"hyperv.spinlocks.state": "hyperv_spinlocks",
"hyperv.spinlocks.retries": "hyperv_spinlocks_retries",
+ "hyperv.vpindex.state": "hyperv_vpindex",
"hyperv.synic.state": "hyperv_synic",
+ "hyperv.stimer.state": "hyperv_stimer",
}
@classmethod
@@ -3010,7 +3012,9 @@ class ParserFeatures(VirtCLIParser):
cls.add_arg("hyperv.relaxed.state", "hyperv_relaxed", is_onoff=True)
cls.add_arg("hyperv.spinlocks.state", "hyperv_spinlocks", is_onoff=True)
cls.add_arg("hyperv.spinlocks.retries", "hyperv_spinlocks_retries")
+ cls.add_arg("hyperv.vpindex.state", "hyperv_vpindex", is_onoff=True)
cls.add_arg("hyperv.synic.state", "hyperv_synic", is_onoff=True)
+ cls.add_arg("hyperv.stimer.state", "hyperv_stimer", is_onoff=True)
cls.add_arg("vmport.state", "vmport", is_onoff=True)
cls.add_arg("kvm.hidden.state", "kvm_hidden", is_onoff=True)
Index: virt-manager-4.1.0/tests/test_cli.py
===================================================================
--- virt-manager-4.1.0.orig/tests/test_cli.py
+++ virt-manager-4.1.0/tests/test_cli.py
@@ -555,7 +555,7 @@ memorytune0.vcpus=0-3,memorytune0.node0.
--metadata title=my-title,description=my-description,uuid=00000000-1111-2222-3333-444444444444,genid=e9392370-2917-565e-692b-d057f46512d6,genid_enable=yes
---features apic.eoi=off,hap=on,hyperv.synic.state=on,hyperv.reset.state=off,hyperv.spinlocks.state=on,hyperv.spinlocks.retries=5678,pae=on,pmu.state=on,pvspinlock.state=off,smm.state=off,viridian=on,vmcoreinfo.state=on,vmport.state=off,kvm.hidden.state=on,hyperv.vapic.state=off,hyperv.relaxed.state=off,gic.version=host,kvm.hint-dedicated.state=on,kvm.poll-control.state=on,ioapic.driver=qemu,acpi=off,eoi=on,privnet=on,hyperv_synic=on,hyperv_reset=on,hyperv_spinlocks=on,hyperv_spinlocks_retries=5678,vmport=off,pmu=off,vmcoreinfo=on,kvm_hidden=off,hyperv_vapic=on,smm=off
+--features apic.eoi=off,hap=on,hyperv.vpindex.state=on,hyperv.synic.state=on,hyperv.stimer.state=on,hyperv.reset.state=off,hyperv.spinlocks.state=on,hyperv.spinlocks.retries=5678,pae=on,pmu.state=on,pvspinlock.state=off,smm.state=off,viridian=on,vmcoreinfo.state=on,vmport.state=off,kvm.hidden.state=on,hyperv.vapic.state=off,hyperv.relaxed.state=off,gic.version=host,kvm.hint-dedicated.state=on,kvm.poll-control.state=on,ioapic.driver=qemu,acpi=off,eoi=on,privnet=on,hyperv_vpindex=on,hyperv_synic=on,hyperv_stimer=on,hyperv_reset=on,hyperv_spinlocks=on,hyperv_spinlocks_retries=5678,vmport=off,pmu=off,vmcoreinfo=on,kvm_hidden=off,hyperv_vapic=on,smm=off
--clock offset=utc,hpet_present=no,rtc_tickpolicy=merge,timer2.name=hypervclock,timer3.name=pit,timer1.present=yes,timer3.tickpolicy=delay,timer2.present=no,timer4.name=rtc,timer5.name=tsc,timer6.name=tsc,timer4.track=wall,timer5.frequency=10,timer6.mode=emulate,timer7.name=rtc,timer7.tickpolicy=catchup,timer7.catchup.threshold=123,timer7.catchup.slew=120,timer7.catchup.limit=10000,rtc_present=no,pit_present=yes,pit_tickpolicy=catchup,tsc_present=no,platform_present=no,hypervclock_present=no,platform_tickpolicy=foo,hpet_tickpolicy=bar,tsc_tickpolicy=wibble,kvmclock_tickpolicy=wobble,hypervclock_tickpolicy=woo
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-many-devices.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-many-devices.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-many-devices.xml
@@ -138,7 +138,9 @@
<vapic state="on"/>
<relaxed state="off"/>
<spinlocks state="on" retries="5678"/>
+ <vpindex state="on"/>
<synic state="on"/>
+ <stimer state="on"/>
</hyperv>
<vmport state="off"/>
<kvm>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-win7-uefi.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-win7-uefi.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-win7-uefi.xml
@@ -23,6 +23,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
<vmport state="off"/>
</features>
@@ -124,6 +127,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
<vmport state="off"/>
</features>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-kvm-win10.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-kvm-win10.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-kvm-win10.xml
@@ -21,6 +21,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
<vmport state="off"/>
</features>
@@ -96,6 +99,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
<vmport state="off"/>
</features>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-os-detect-fail-fallback.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-os-detect-fail-fallback.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-os-detect-fail-fallback.xml
@@ -19,6 +19,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
</features>
<clock offset="localtime"/>
@@ -67,6 +70,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
</features>
<clock offset="localtime"/>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-kvm-win2k3-cdrom.xml
@@ -21,6 +21,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
<vmport state="off"/>
</features>
@@ -93,6 +96,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
<vmport state="off"/>
</features>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-w2k3-cdrom.xml
@@ -20,6 +20,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
</features>
<cpu>
@@ -72,6 +75,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
</features>
<cpu>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-unattended-remote-cdrom.xml
@@ -19,6 +19,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
</features>
<clock offset="localtime"/>
@@ -78,6 +81,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
</features>
<clock offset="localtime"/>
Index: virt-manager-4.1.0/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
===================================================================
--- virt-manager-4.1.0.orig/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
+++ virt-manager-4.1.0/tests/data/cli/compare/virt-install-osinfo-win7-unattended.xml
@@ -20,6 +20,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
</features>
<cpu mode="host-passthrough"/>
@@ -111,6 +114,9 @@
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
+ <vpindex state="on"/>
+ <synic state="on"/>
+ <stimer state="on"/>
</hyperv>
</features>
<cpu mode="host-passthrough"/>