I have been using Windows with the Fedora virtio drives for a couple years now.
One thing that has bothered me is even with the virtio drivers disk IO is still limited inside of the VM.
I have observed that writing to multiple virtio disks from within windows can have a total IO throughput twice as fast as writing to a single disk.
So I decided to do an experiment with my 2.0 RC1 setup.
My disk storage is DRBD over Infiniband to Areca 1880ix-12 4GB cache with 6 500GB Segate 7200 RPM SATA III disks in RAID 5.
Disks are setup with cache=none
First I benchmarked a single virtio disk:
Next I added three virtio disks to this same Windows VM.
All three disks are on the same LVM volume as the test above.
In windows I configured the three disks as a software stripe.
Benchmark results of the striped volume:
In both examples the data is being written to the exact same disks.
But when windows thinks it has three disks rather than one performance is drastically increased.
Is KVM allowing more IO because of the three disks? Maybe one thread per emulated disk or something?
or
Is windows performing more IO because it thinks it has three disks?
Seeing that it is possible to really push IO to a windows VM makes me wonder if there is some performance tuning that could be done to improve throughput on a single disk rather than doing a software stripe in windows.
Anyone have any ideas on where to look for possible performance enhancing tweaks?
One thing that has bothered me is even with the virtio drivers disk IO is still limited inside of the VM.
I have observed that writing to multiple virtio disks from within windows can have a total IO throughput twice as fast as writing to a single disk.
So I decided to do an experiment with my 2.0 RC1 setup.
My disk storage is DRBD over Infiniband to Areca 1880ix-12 4GB cache with 6 500GB Segate 7200 RPM SATA III disks in RAID 5.
Disks are setup with cache=none
First I benchmarked a single virtio disk:
Next I added three virtio disks to this same Windows VM.
All three disks are on the same LVM volume as the test above.
In windows I configured the three disks as a software stripe.
Benchmark results of the striped volume:
In both examples the data is being written to the exact same disks.
But when windows thinks it has three disks rather than one performance is drastically increased.
Is KVM allowing more IO because of the three disks? Maybe one thread per emulated disk or something?
or
Is windows performing more IO because it thinks it has three disks?
Seeing that it is possible to really push IO to a windows VM makes me wonder if there is some performance tuning that could be done to improve throughput on a single disk rather than doing a software stripe in windows.
Anyone have any ideas on where to look for possible performance enhancing tweaks?