For the case of simply using local disk mounted for /var/lib/nova and raw disk image type, you could try adding to nova.conf:

preallocate_images = space

This implicitly changes the I/O method in libvirt from "threads" to "native", which in my case improved performance a lot (10 times) and generally is the best performance I could get.

Best Regards
Daniel
On 8/2/2019 10:53, Budai Laszlo wrote:
Hello all,

we have a problem with the performance of the disk IO in a KVM instance. 
We are trying to provision VMs with high performance SSDs. we have investigated different possibilities with different results ...

1. configure Nova to use local LVM storage (images_types = lvm) - provided the best performance, but we could not migrate our instances (seems to be a bug).
2. use cinder with lvm backend  and instance locality, we could migrate the instances, but the performance is less than half of the previous case
3. mount the ssd on /var/lib/nova/instances and use the images_type = raw in nova. We could migrate, but the write performance dropped to ~20% of the images_types = lvm performance and read performance is ~65% of the lvm case.

do you have any idea to improve the performance for any of the cases 2 or 3 which allows migration.

Kind regards,
Laszlo