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.
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.
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.
I'd have assumed native should cache and batch too though unless you explicitly flush.
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.
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.