For adding a bit on this subjects, some games (blizzard games, tomb raider at it's launch) use a lot of msrs during run. It seems this is made for their anti-cheat / hack systems.
Heroes of the storm, SC2 are spamming these msrs. This reduce performance quite hardly. Funny thing: This "bug" does not apply to win8 / win7 :) For reference we spoke about such in this thread a long time ago: https://www.redhat.com/archives/vfio-users/2016-May/msg00134.html The kernel spam of such error at Heroes of the storm login screen: [136995.284205] kvm [6799]: vcpu2, guest rIP: 0xfffff8016e757733 kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop [136995.284217] kvm [6799]: vcpu2, guest rIP: 0xfffff8016e757733 kvm_set_msr_common: MSR_IA32_DEBUGCTLMSR 0x1, nop [137000.285330] kvm_get_msr_common: 302015 callbacks suppressed [137000.285337] kvm [6799]: vcpu5, guest rIP: 0xfffff8016e75779c ignored rdmsr: 0x1c9 [137000.285342] kvm [6799]: vcpu5, guest rIP: 0xfffff8016e7577aa ignored rdmsr: 0x680 [137000.285344] kvm [6799]: vcpu5, guest rIP: 0xfffff8016e7577c1 ignored rdmsr: 0x6c0 -- Deldycke Quentin On 6 January 2017 at 14:07, Thomas Lindroth <thomas.lindr...@gmail.com> wrote: > On 01/06/2017 01:00 PM, Marius Steffen wrote: > > Is there anything I can do to a) find the cause of this bad performance > > b) make my VM perform better? > > One thing you can try is to run the game with poor performance and at the > same time run "perf kvm --host stat live" on the host. This will show how > many VM-EXIT kvm performs. VM-EXIT means the guest has done something the > hardware virtualisation can't handle, like accessing MSR or virtual IO. > > Some workloads will perform badly because they cause a lot of VM-EXIT. > Perf will tell you why a VM-EXIT was performed. The more common causes are > IO_INSTRUCTION and EPT_MISCONFIG. IO_INSTRUCTION means the guest tried to > access an x86 ioport and EPT_MISCONFIG seems to be an odd name for access > to memory mapped io. Sometimes a lot of time is spent in HLT but that's > normal. It only means the guest OS has nothing to do and goes idle. > > By running "perf kvm --host stat live --event=ioport" you can check which > ioport is accessed and "perf kvm --host stat live --event=mmio" shows > which address was accessed for memory mapped io. > > If you see that an mmio address is accessed a lot and want to find out what > it is you can run "virsh qemu-monitor-command <nameofvm> --hmp 'info > mtree'" > to get a list of the memory layout of the VM. Unfortunately I don't know > of any way to get a similar list of ioports. > > As an example on my system some games like Rise of the Tomb Raider and > Assassin's Creed Unity will access ioport 0xb008 more than 200,000 > times/sec > and those games will have poor performance compared to native. Qemu > hardcode the acpi timer to ioport 0xb008 and those games excessively read > the hardware timer. I haven't figured out any way to work around the > problem > but I run games with vsync on and even with the decreased performance I get > 60fps in those titles. > > _______________________________________________ > vfio-users mailing list > vfio-users@redhat.com > https://www.redhat.com/mailman/listinfo/vfio-users >
_______________________________________________ vfio-users mailing list vfio-users@redhat.com https://www.redhat.com/mailman/listinfo/vfio-users