The optimal configuration is (usually) as follows:
On the host, set elevator=deadline
Use virtio and only virtio
use raw LVs whenever possible. Qcow2 gives overhead. Files on a FS also have overhead
in the VM use the elevator=noop
both in host and VM, use noatime,nodiratime in fstab wherever possible
Make sure the virtio drivers are up to date, especially the windows ones.
Debian based distros are (arguably) not as good as Fedora and RHEL for QEMU/KVM. Not to start a flamewar, but most of the development and testing is done on Fedora and RHEL, and in my own experience, there have been lots of issues on Ubuntu and Debian that I couldn't reproduce on Fedora and RHEL. You can ignore this particular bullet if you want, but if you're looking for a solution, a quick benchmark on another distro is usually worth a try