Introduce QEMUDevice, making the ioport/iomem->device relationship visible. 

At the moment it only contains a lock, but could be extended.

With it the following is possible:
    - vcpu's to read/write via ioports/iomem while the iothread is working on 
      some unrelated device, or just copying data from the kernel.
    - vcpu's to read/write via ioports/iomem to different devices 
simultaneously.

This patchset is only a proof of concept kind of thing, so only serial+raw image
are supported. 

Tried two benchmarks, iperf and tiobench. With tiobench the reported latency is 
significantly lower (20%+), but throughput with IDE is only slightly higher. 

Expect to see larger improvements with a higher performing IO scheme (SCSI 
still buggy,
looking at it).

The iperf numbers are pretty good. Performance of UP guests increase slightly 
but SMP
is quite significant.

Note that workloads with multiple busy devices (such as databases, web servers) 
should
be the real winners.

What is the feeling on this? Its not _that_ intrusive and can be easily NOP'ed 
out for
QEMU.

iperf -c 4 -i 60

---- e1000

UP guest:
global lock
[SUM]  0.0-10.0 sec    156 MBytes    131 Mbits/sec
[SUM]  0.0-10.0 sec    151 MBytes    126 Mbits/sec
[SUM]  0.0-10.0 sec    151 MBytes    126 Mbits/sec
[SUM]  0.0-10.0 sec    151 MBytes    127 Mbits/sec
per-device lock
[SUM]  0.0-10.0 sec    164 MBytes    137 Mbits/sec
[SUM]  0.0-10.0 sec    161 MBytes    135 Mbits/sec
[SUM]  0.0-10.0 sec    158 MBytes    133 Mbits/sec
[SUM]  0.0-10.0 sec    171 MBytes    143 Mbits/sec

SMP guest (4-way)
global lock
[SUM]  0.0-13.0 sec    402 MBytes    259 Mbits/sec
[SUM]  0.0-10.1 sec    469 MBytes    391 Mbits/sec
[SUM]  0.0-10.1 sec    477 MBytes    397 Mbits/sec
[SUM]  0.0-10.0 sec    469 MBytes    393 Mbits/sec
per-device lock
[SUM]  0.0-13.0 sec    471 MBytes    304 Mbits/sec
[SUM]  0.0-10.2 sec    532 MBytes    439 Mbits/sec
[SUM]  0.0-10.1 sec    510 MBytes    423 Mbits/sec
[SUM]  0.0-10.1 sec    529 MBytes    441 Mbits/sec

----- virtio-net
UP guest:
global lock
[SUM]  0.0-13.0 sec    192 MBytes    124 Mbits/sec
[SUM]  0.0-10.0 sec    213 MBytes    178 Mbits/sec
[SUM]  0.0-10.0 sec    213 MBytes    178 Mbits/sec
[SUM]  0.0-10.0 sec    213 MBytes    178 Mbits/sec
per-device lock
[SUM]  0.0-13.0 sec    193 MBytes    125 Mbits/sec
[SUM]  0.0-10.0 sec    210 MBytes    176 Mbits/sec
[SUM]  0.0-10.0 sec    218 MBytes    183 Mbits/sec
[SUM]  0.0-10.0 sec    216 MBytes    181 Mbits/sec

SMP guest:
global lock
[SUM]  0.0-13.0 sec    446 MBytes    288 Mbits/sec
[SUM]  0.0-10.0 sec    521 MBytes    437 Mbits/sec
[SUM]  0.0-10.0 sec    525 MBytes    440 Mbits/sec
[SUM]  0.0-10.0 sec    533 MBytes    446 Mbits/sec
per-device lock
[SUM]  0.0-13.0 sec    512 MBytes    331 Mbits/sec
[SUM]  0.0-10.0 sec    617 MBytes    517 Mbits/sec
[SUM]  0.0-10.1 sec    631 MBytes    527 Mbits/sec
[SUM]  0.0-10.0 sec    626 MBytes    524 Mbits/sec


-- 


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to