I've got a Debian 10.6 Host, with a Debian 10.6 guest. KVM/Qemu/libvirt. The host has a software RAID 10 array with 6 mechanical disks. LVM is on top of the RAID array. One LV is passed into the guest using:
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/raid10/lv0'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</disk>
The host writes to the logical volume at about 720 MB/s:
dd of=diskbench if=/dev/zero bs=30000000 count=2000
(60 GB, 56 GiB) copied, 82.7758 s, 725 MB/s
(60 GB, 56 GiB) copied, 82.5263 s, 727 MB/s
(60 GB, 56 GiB) copied, 83.8701 s, 715 MB/s
(45 GB, 42 GiB) copied, 58.9086 s, 772 MB/s
Inside the guest though, the same test runs much slower:
dd of=diskbench if=/dev/zero bs=30000000 count=2000
(60 GB, 56 GiB) copied, 254.088 s, 236 MB/s
(60 GB, 56 GiB) copied, 245.407 s, 244 MB/s
(60 GB, 56 GiB) copied, 242.558 s, 247 MB/s
This system is not in production yet and not under load. What can I check for to improve write performance?