CentOS 8.x KVM Creating Windows VMs with fast disk input output (io)
From Notes_Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
<yambe:breadcrumb self="Creating Windows VMs with fast disk input output (io)">CentOS_8.x_KVM|KVM</yambe:breadcrumb>
CentOS 8.x KVM Creating Windows VMs with fast disk input output (io)
While creating Windows VM use following recommendations along with mentioned references
- Use virtio drivers for Windows KVM VMs
- https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
- After creating VM use option to "Customize configuration before install". Add another storage device of type CD/DVD ROM and select above iso. Then using OS installation to detect hard-disk choose "Load driver" and choose appropriate drivers from CD/DVD (Typically amd64/OS") folder.
- Specifically for Windows 10 all of above also leads to marginal performance. Changing disk from qcow2 to raw has dramatic speed improvements (upto 10x). If snapshots are must then use LVM instead of raw format.
- https://serverfault.com/questions/425607/kvm-guest-io-is-much-slower-than-host-io-is-that-normal
- https://serverfault.com/questions/407842/incredibly-low-kvm-disk-performance-qcow2-disk-files-virtio
- https://pve.proxmox.com/wiki/Performance_Tweaks
- https://unix.stackexchange.com/questions/47082/how-to-improve-windows-perfomance-when-running-inside-kvm
- In case you cannot use raw format and use of qcow2 is required, then make sure metadata space is pre-allocated
- Make sure cache is set to none (Preferred). Cache option of write-through has very bad performance. Using write-back gives further 10x improvement over other types of cache but may lead to data loss in case of abrupt shutdown.
- IO Mode to native in case cache is none. If cache is write-back then IO mode should be threads.
- Avoid use of IOthreads as explained at
- https://www.ibm.com/support/knowledgecenter/linuxonibm/com.ibm.linux.z.ldvq/ldvq_kvm_quick_start.html
- https://www.ibm.com/support/knowledgecenter/linuxonibm/com.ibm.linux.z.ldva/ldva_t_definingGuestDevices.html
- This gives error that iothreads are not supported in latest CentOS 7
- Setting CPU model to host-model (host-passthrough) or core2duo might improve things CentOS 7.x Cloudstack 4.11 Guest VM CPU configuration for Windows
- There are some hyper-V related settings suggested at
- https://forums.unraid.net/topic/36777-kvm-windows-guests-100-disk-in-task-manager-and-very-slow/
- They seem to come by default if you select Guest OS as Windows 10 during VM creation
It would also make sense to change NIC from e1000 to virtio and install related network drivers from the virtio iso linked above.
<yambe:breadcrumb self="Creating Windows VMs with fast disk input output (io)">CentOS_8.x_KVM|KVM</yambe:breadcrumb>