Hi.
I would have been much more interested in how a virtual machine performs with paravirtualized guest drivers -- unless this is what was actually done as there is no mention of using paravirtualized or virtio drivers at all.
Hi.
I would have been much more interested in how a virtual machine performs with paravirtualized guest drivers -- unless this is what was actually done as there is no mention of using paravirtualized or virtio drivers at all.
How can you test the IO performance of a virtualized Linux host and not use virtio? It is akin to testing the top speed of a porsche on the spare doughnut... It makes 0 sense.
Can you do some honest benchmarking and use virtio? These numbers are completely ignorant at best. If you want good IO on kvm, you use the paravirt drivers.
I don't agree with you.
Someone lay person who is examining comparitive results are the target for most of Phoronix articles. The key is "available at arms length" benchmarking, ie: easily available - out of the box.
If you want to create a recipe that shows KVM to the the best capability, can I suggest the following
1) Identify all the steps needed for the tuned setup
2) Create a fully described list of directions for building the tuned setup
3) Execute the list, keeping track of the length of time to do it.
4) Repeat the benchmark (Michael can probably supply a PTS test suite to do so)
5) Post the collection here.
I'd be interested to see the effort and results.
The SQLite test was faster under the VM.
Although I don't have explicit information on the benchmark, it would appear that the VM is doing the operations synchronously (similar to the native execution), but the VM's disk driver is caching and batching the writes.
This would result in a faster experience under a VM, however you risk data integrity that you don't risk in the native position.
I would expect that it is a possible bug in the KVM driver stack, however the any SQLite based application would experience the performance boost.
So this sort of benchmarking does show extreme value and doesn't mislead. It highlights a questionable delta between Host and Guest, and consequently requires deeper examination.
The net result is that currently, out of the box KVM support is slow for most operations except some CPU bound operations, but even more concerning it potentially risks data by not making synchronous IO operations asynchronous.
Regards,
Matthew
Last edited by mtippett; 09-22-2009 at 08:50 PM. Reason: Added "a" to asynchronous in the last sentence.
Seems I interpreted IO wrong then. But yeah, I do agree that KMV is likely slower for most operations. (covering real-life usage that this test was related to only slightly) The virtualization extensions should only really be helpful for the CPU bound operations as far as I've understood.
I'd have assumed native should cache and batch too though unless you explicitly flush.
If you LD_PRELOAD a library that implements fsync() as a no-op, you can get the same speedup on the host, without virtualization! I suggest you use this handy library someone provided. Heck, it might be better to just patch your glibc and not mess with pesky preloading. Instant speedup!
You obviously don't know what you're talking about. Read a little. Actual technical stuff, not "benchmarks" done by a monkey trained to run the single-click "suite" without knowing what is measured or what it means.
For the record, that result just means all their numbers are invalid and completely useless.
That single case was brought up as a peculiarity, not as a recommendation to use SQLite under VM. It kinda jumps up when you've immensively better results in VM than native, that's what I meant with that first bit. It was a single case where VM seemed faster so I picked it up. Naturally native being tons faster than VM is uninteresting (except for CPU-bound tasks) since it's expected. What I continued with was that I intuitively assumed that reading an SQLite database file inside an image file on the hard disk would be slower than just reading a file on the hard disk. (on latter thoughts I'm not even sure if this matters, might not even significantly increase fragmentation)
Also read my message again: My conclusion was that virtual I/O needs to develop, not that real I/O needs to take example of virtual I/O. Even though the basis for my conclusion was wrong, the conclusion was apparently right.
Last edited by nanonyme; 09-23-2009 at 04:42 AM.