Re: [Qemu-devel] Re: QEMU-KVM and video performance

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

 



On Wed, 21 Apr 2010, Avi Kivity wrote:

On 04/21/2010 09:50 PM, Gerhard Wiesinger wrote:
I don't think changing VGA window is a problem because there are
500.000-1Mio changes/s possible.

1MB/s, 500k-1M changes/s.... Coincidence?  Is it taking a page fault
or trap on every write?


To clarify:
Memory Performance writing to segmen A000 is about 1MB/st.

That indicates a fault every write (assuming 8-16 bit writes). If you're using 256 color vga and not switching banks, this indicates a bug.


Yes, 256 color VGA and no bank switches involved.

Calling INT 10 set/get window function with different windows (e.g. toggling between window page 0 and 1) is about 500.000 to 1Mio function calls per second.

That's suprisingly fast. I'd expect 100-200k/sec.


Sorry, I mixed up the numbers:
1.) QEMU-KVM: ~111k
2.) QEMU only: 500k-1Mio

Please run kvm_stat and report output for both tests to confirm.


See below. 2nd column is per second statistic when running the test.


To get real good VGA performance both parameters should be:
About >50MB/s for writes to segment A000
~500.000 bank switches per second.

First should be doable easily, second is borderline.

I think this is very easy to distingish:
1.) VGA Segment A000 is legacy and should be handled through QEMU and not through KVM (because it is much more faster). Also 16 color modes should be fast enough there. 2.) All other flat PCI memory accesses should be handled through KVM (there is a specialized driver loaded for that PCI device in the non legacy OS).

Is that easily possible?

No. Code can run in either qemu or kvm, not both. You can switch between them based on access statistics (early versions of qemu-kvm did that, without the statistics part), but this isn't trivial.

Hmmm. Ok, 2 different opinions about the memory write performance:
Easily or not possible?

Thnx for you help so far.

Ciao,
Gerhard

--
http://www.wiesinger.com/

-------------
kvm_stat
Please mount debugfs ('mount -t debugfs debugfs /sys/kernel/debug')
and ensure the kvm modules are loaded

lsmod|grep -i kvm
kvm_amd                38276  0
kvm                   162288  1 kvm_amd

mount|grep -i debug

=>
mount -t debugfs debugfs /sys/kernel/debug

int10perf: INT10h Performance tests:
kvm statistics
 efer_reload                  0       0
 exits                 37648629  456206
 fpu_reload             8512535  455983
 halt_exits                2084       0
 halt_wakeup               2047       0
 host_state_reload      8513213  456011
 hypercalls                   0       0
 insn_emulation        29182065       0
 insn_emulation_fail          0       0
 invlpg                       0       0
 io_exits               8386082  455975
 irq_exits                51713     214
 irq_injections           21797      36
 irq_window                   0       0
 largepages                   0       0
 mmio_exits              242781       0
 mmu_cache_miss             150       0
 mmu_flooded                  0       0
 mmu_pde_zapped               0       0
 mmu_pte_updated              0       0
 mmu_pte_write             8192       0
 mmu_recycled                 0       0
 mmu_shadow_zapped          151       0
 mmu_unsync                   0       0
 mmu_unsync_global            0       0
 nmi_injections               0       0
 nmi_window                   0       0
 pf_fixed                 16935       0
 pf_guest                     0       0
 remote_tlb_flush             2       0
 request_irq                  0       0
 request_nmi                  0       0
 signal_exits                 1       0
 tlb_flush                 2251       0

Running VGA memory tests in same VGA page in Video Mode VESA 101h:
kvm statistics

 efer_reload                  0       0
 exits                 18470836  554582
 fpu_reload             2147833    3469
 halt_exits                2083       0
 halt_wakeup               2047       0
 host_state_reload      2148186    3470
 hypercalls                   0       0
 insn_emulation         7688203  554244
 insn_emulation_fail          0       0
 invlpg                       0       0
 io_exits              10701583      18
 irq_exits                50781     321
 irq_injections           25251      18
 irq_window                   0       0
 largepages                   0       0
 mmio_exits              162847    3241
 mmu_cache_miss             154       0
 mmu_flooded                  0       0
 mmu_pde_zapped               0       0
 mmu_pte_updated              0       0
 mmu_pte_write             8192       0
 mmu_recycled                 0       0
 mmu_shadow_zapped          155       0
 mmu_unsync                   0       0
 mmu_unsync_global            0       0
 nmi_injections               0       0
 nmi_window                   0       0
 pf_fixed                 16936       0
 pf_guest                     0       0
 remote_tlb_flush             5       0
 request_irq                  0       0
 request_nmi                  0       0
 signal_exits                 1       0
 tlb_flush                  112       0
--
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

[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