First of all, you don't need to set scheduler as deadline on VM. Just disable it (elevator=none). The HV will handle it for the VM.

Furthermore, as generic performance optimization, I recommend you disable swappiness on the HV, as well as zone reclaim.

I invite you to read this IBM paper: http://pic.dhe.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=/liaat/liaattunkickoff.htm
It's quite a good starting point.


On 01/19/2014 08:01 PM, Matteo Lanati wrote:
Hi all,

I'm running a VM using libvirt+KVM and I have a disk performance issue.

The host is the following:
4 cores Intel Xeon 5140@2.33 GHz, 16 GB of RAM, SATA HDD, OS Debian Wheezy,
libvirt 0.9.12-11, QEMU-KVM 1.1.2+dfsg-2.

The guest:
1 CPU, 2 GB RAM running Debian 7.0, image in compressed qcow2 format.

When I try do run "dd if=/dev/zero of=io.test bs=32768k count=40" I get
around 500 MB/s on bare metal, while only around 30 MB/s inside the VM.

I'm trying to get something more out of the virtualization layer, I hope
that there's room for improvement.

I'm using virtio, I aready set cache='none' and io='native' in the domain
definition. Both host and guest are using deadline as I/O scheduler. The VM
uses an ext4 filesystem, while the image is saved on an ext3 disk. I
mounted the host and guest filesystems specifying nodiratime and noatime
options. Even if I convert the image to raw format nothing changes.
I didn't mess with iotune nor blockio.

Is there something that I overlooked or any other suggestion?

Thanks in advance for your help.


libvirt-users mailing list

Pierre Schweitzer <pierre@reactos.org>
System Administrator
ReactOS Foundation