All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: VT is comically slow
@ 2006-07-07  1:43 alex
  2006-07-07  2:01 ` Andrew Warfield
  2006-07-07 12:19 ` Anthony Liguori
  0 siblings, 2 replies; 16+ messages in thread
From: alex @ 2006-07-07  1:43 UTC (permalink / raw)
  To: xen-devel

Anthony Liguori wrote:
> ...
> > We (Virtual Iron) are in a process of developing accelerated drivers for
> > the HVM guests.  Our goal for this effort is to get as close to native
> > performance as possible and to make paravirtualization of guests
> > unnecessary.  
> ...
> I don't think paravirtual drivers are necessary for good performance. 
> There are a number of things about QEMU's device emulation that are less
> than ideal.
>
Before deciding to implement accelerated drivers for many different guest OSes, 
no trivial undertaking, we did quite a lot of analysis of QEMU and its capabilities.
Our conclusion was that QEMU in the near future was not going to be able to 
reach performance goals that we set out for our product.  Instead of hacking on 
QEMU in hope of getting better numbers out of it, we decided to design and implement 
accelerated drivers and the performance numbers we are getting proves that was the 
right decision to make.  As I mentioned in my post before, these drvers will be freely 
available under GPL and everyone is welcome to use them.
>
>...
> Also, and I suspect this has more to do with your performance numbers,
> QEMU currently does disk IO via read()/write() syscalls on an fd that's
> open()'d without O_DIRECT.  This means everything's going through the page
> cache.
The QEMU code that we use doesn't go through the dom0 buffer cache, we modified the 
code to use O_DIRECT.  Can't user buffer cache and accelerated drivers (they go right 
to the disk) together, it can cause disk corruption.  The performance numbers we get 
from this version of QEMU is still 4 to 6 times slower that native disk I/O.
>
> I suspect that SCSI + linux-aio would result in close to native
> performance.  Since SCSI is already in QEMU CVS, it's not that far off.
>
You might be right, however even with pipelining and async I/O, I don't think it is going to get close to native I/O numbers.  I guess we'll just have to wait 
and see.
>
>
Best,

-Alex V.

^ permalink raw reply	[flat|nested] 16+ messages in thread
* Re: Re: VT is comically slow
@ 2006-07-07  2:35 alex
  2006-07-11 12:30 ` Horms
  0 siblings, 1 reply; 16+ messages in thread
From: alex @ 2006-07-07  2:35 UTC (permalink / raw)
  To: xen-devel

Andrew Warfield wrote:
> > The QEMU code that we use doesn't go through the dom0 buffer cache, we modified the
> > code to use O_DIRECT.  Can't user buffer cache and accelerated drivers (they go right
> > to the disk) together, it can cause disk corruption.  The performance numbers we get
> > from this version of QEMU is still 4 to 6 times slower that native disk I/O.
>
> I doubt O_DIRECT buys you much in the way of performance -- as you say
> it's just a correctness thing.  Still, the qemu block code is all
> completely synchronous -- the fact that you simply can't have more
> than a single outstanding block request at a time is going to
> seriously harm performance.  As Anthony explained, some form of
> asynchronous IO in the qemu drivers would clearly improve performance.
>
That was exactly my point, that O_DIRECT doesn't improve performance. Anthony had a 
a point in his e-mail that buffered I/O could be one of the reasons that performance 
of QEMU is slow.  
>
> > You might be right, however even with pipelining and async I/O, I don't think it is going to >> > > get close to native I/O numbers.  I guess we'll just have to wait and see.
> 
> I'd expect that disk can be made to perform reasonably well with qemu,
> using dma emulation and async IO.  The old vmware workstation paper on
> device virtualization does a pretty good job of demonstrating that
> trap and emulate device access sucks, and would seem to imply that
> it's pretty unlikely to be practical for high-rate networking.
>
I understand what you guys are proposing, and I look forward to see your implementation and to 
your performance numbers.  In particular it would be very interesting to see what kind of CPU overhead you'll get. With regard to networking I agree with the VMWare guys, it is not practical to do traps & emulation to achieve high rate networking throughput.  For example, with our accel drivers on certain network benchmarks we can drive network almost at wire speeds from an HVM domain and consume very few CPU cycles in doing this.

Cheers,

-Alex V.

^ permalink raw reply	[flat|nested] 16+ messages in thread
* Re: VT is comically slow
@ 2006-07-06 19:16 alex
  2006-07-06 20:59 ` Anthony Liguori
  2006-07-10  7:51 ` Rami Rosen
  0 siblings, 2 replies; 16+ messages in thread
From: alex @ 2006-07-06 19:16 UTC (permalink / raw)
  To: xen-devel


Rik van Riel wrote:
> VT by itself seems fine, but once a VT domain is running a workload that
> is network intensive combined with a disk/cpu intensive workload, things
> get incredibly slow.
>
> Operations that take less than a second with either workload running
> alone can now take many seconds, sometimes the better part of a minute!
>
> Is this some limitation of the qemu device model?

We (Virtual Iron) are in a process of developing accelerated drivers for the HVM guests.  Our goal for this effort is to get as close to native performance as possible and to make paravirtualization of guests unnecessary.  The drivers currently support most flavors of RHEL, SLES and Windows.  The early performance numbers are encouraging.  Some numbers are many times faster than QEMU emulation and are close to native performance numbers (and we are just beginning to tune the performance).

Just to give people a flavor of the performance that we are getting, here are some preliminary results on Intel Woodcrest (51xx series), with a Gigabit network, with SAN storage and all of the VMs were 1 CPU.  These numbers are very early, disks numbers are very good and we are still tuning the network numbers.

Bonnie-SAN - bigger is better        RHEL-4.0 (32-bit)   VI-accel RHEL-4.0(32-bit)
Write, KB/sec                          52,106                 49,500
Read, KB/sec                           59,392                 57,186 

netperf - bigger is better           RHEL-4.0 (32-bit)   VI-accel RHEL-4.0(32-bit)
tcp req/resp (t/sec)	               6,831                  5,648

SPECjbb2000 - bigger is better       RHEL-4.0 (32-bit)   VI-accel RHEL-4.0(32-bit)
JRockit JVM thruput                    43,061                 40,364

This code is modeled on Xen backend/frontend architecture concepts and will be GPLed.  
 
-Alex V.

Alex Vasilevsky
Chief Technology Officer, Founder
Virtual Iron Software, Inc

^ permalink raw reply	[flat|nested] 16+ messages in thread
* VT is comically slow
@ 2006-07-03  8:28 Rik van Riel
  2006-07-03  8:48 ` Rik van Riel
  2006-07-03 15:10 ` Keir Fraser
  0 siblings, 2 replies; 16+ messages in thread
From: Rik van Riel @ 2006-07-03  8:28 UTC (permalink / raw)
  To: xen-devel

VT by itself seems fine, but once a VT domain is running a workload that
is network intensive combined with a disk/cpu intensive workload, things
get incredibly slow.

Operations that take less than a second with either workload running
alone can now take many seconds, sometimes the better part of a minute!

Is this some limitation of the qemu device model?

-- 
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it." - Brian W. Kernighan

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2006-07-11 12:30 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-07  1:43 VT is comically slow alex
2006-07-07  2:01 ` Andrew Warfield
2006-07-07 12:19 ` Anthony Liguori
  -- strict thread matches above, loose matches on Subject: below --
2006-07-07  2:35 alex
2006-07-11 12:30 ` Horms
2006-07-06 19:16 alex
2006-07-06 20:59 ` Anthony Liguori
2006-07-10  7:51 ` Rami Rosen
2006-07-03  8:28 Rik van Riel
2006-07-03  8:48 ` Rik van Riel
2006-07-03  8:58   ` Keir Fraser
2006-07-03 10:31     ` Daniel Veillard
2006-07-03 14:14       ` Rik van Riel
2006-07-03 14:43         ` Petersson, Mats
2006-07-03 19:16           ` Rik van Riel
2006-07-04  7:03             ` Keir Fraser
2006-07-03 15:10 ` Keir Fraser

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.