Il 27/08/2013 09:38, Gleb Natapov ha scritto: > On Tue, Aug 27, 2013 at 09:18:00AM +0200, Paolo Bonzini wrote: >>> I've captured 20,000 lines of kvm trace output. This can be found >>> https://gist.github.com/devicenull/fa8f49d4366060029ee4/raw/fb89720d34b43920be22e3e9a1d88962bf305da8/trace >> >> The guest is doing quite a lot of exits per second, mostly to (a) access >> the ACPI timer > I see a lot of PM timer access not ACPI timer. The solution for that is > the patchset Brian linked. ACPI timer = PM timer, no? >> (b) service NMIs. In fact, every NMI is reading the >> timer too and causing an exit to QEMU. >> > Do you mean "kvm_exit: reason EXCEPTION_NMI rip 0xfffff800016dcf84 info > 0 80000307"? Those are not NMIs, single NMI will kill Windows, they are #NM > exceptions. Oops, yes. > Brian, is your workload uses floating point calculation? Yeah, it looks like it does, there are a lot of kvm_fpu tracepoints too. Basically the problem is that every exit to userspace unloads the FPU in vcpu_put. qemu-system-x86-16189 [003] d... 9439.144500: kvm_entry: vcpu 12 qemu-system-x86-16189 [003] d... 9439.144502: kvm_exit: reason EXCEPTION_NMI rip 0xfffff800016dcf84 info 0 80000307 qemu-system-x86-16189 [003] .... 9439.144502: kvm_fpu: load qemu-system-x86-16189 [003] d... 9439.144503: kvm_entry: vcpu 12 qemu-system-x86-16189 [003] d... 9439.144505: kvm_exit: reason IO_INSTRUCTION rip 0xfffff8000162d17d info b008000b 0 qemu-system-x86-16189 [003] .... 9439.144506: kvm_emulate_insn: 0:fffff8000162d17d:ed (prot64) qemu-system-x86-16189 [003] .... 9439.144506: kvm_pio: pio_read at 0xb008 size 4 count 1 qemu-system-x86-16189 [003] .... 9439.144507: kvm_userspace_exit: reason KVM_EXIT_IO (2) qemu-system-x86-16189 [003] .... 9439.144508: kvm_fpu: unload qemu-system-x86-16189 [003] d... 9439.144578: kvm_entry: vcpu 12 qemu-system-x86-16189 [003] d... 9439.144579: kvm_exit: reason EXCEPTION_NMI rip 0xfffff800016dcf84 info 0 80000307 qemu-system-x86-16189 [003] .... 9439.144581: kvm_fpu: load qemu-system-x86-16189 [003] d... 9439.144581: kvm_entry: vcpu 12 qemu-system-x86-16189 [003] d... 9439.144583: kvm_exit: reason IO_INSTRUCTION rip 0xfffff8000162d17d info b008000b 0 qemu-system-x86-16189 [003] .... 9439.144585: kvm_emulate_insn: 0:fffff8000162d17d:ed (prot64) qemu-system-x86-16189 [003] .... 9439.144585: kvm_pio: pio_read at 0xb008 size 4 count 1 qemu-system-x86-16189 [003] .... 9439.144586: kvm_userspace_exit: reason KVM_EXIT_IO (2) qemu-system-x86-16189 [003] .... 9439.144587: kvm_fpu: unload qemu-system-x86-16189 [003] d... 9439.144787: kvm_entry: vcpu 12 qemu-system-x86-16189 [003] d... 9439.144788: kvm_exit: reason EXCEPTION_NMI rip 0xfffff800016dcf84 info 0 80000307 qemu-system-x86-16189 [003] .... 9439.144789: kvm_fpu: load qemu-system-x86-16189 [003] d... 9439.144789: kvm_entry: vcpu 12 qemu-system-x86-16189 [003] d... 9439.144791: kvm_exit: reason IO_INSTRUCTION rip 0xfffff8000162d17d info b008000b 0 qemu-system-x86-16189 [003] .... 9439.144792: kvm_emulate_insn: 0:fffff8000162d17d:ed (prot64) qemu-system-x86-16189 [003] .... 9439.144793: kvm_pio: pio_read at 0xb008 size 4 count 1 qemu-system-x86-16189 [003] .... 9439.144794: kvm_userspace_exit: reason KVM_EXIT_IO (2) qemu-system-x86-16189 [003] .... 9439.144794: kvm_fpu: unload It should be interesting to analyze the cost in kvm-unit-tests. I'll look at it. Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html