PVE 7.1 with zfs - best practices for Windows VM hard disk

seppix

Member
Mar 9, 2020
1
0
6
51
Dear community,

after reading a lot in this forum I would like to post my first thread in order to get some clarification.
I am looking for the best performing setup for a Windows 10 VM on a PVE 7.1
- with local zfs file system raid10 (4 x middle aged enterprise SSD) underneath
- with plenty of physical RAM (256 GByte)
- running on on a Dell R420 with 2 x E5-2470

The more i read, the more I am confused ;-)
I know this Windows 10 guest best practices
https://pve.proxmox.com/wiki/Windows_10_guest_best_practices ,
but I am unsure if they really fit to all PVE situations.

So I would like to know what to choose for my situation
- which bus/device --> VirtIO Block or SCSI?
- what cache (local zfs underneath)
- SSD emulation yes/no?
- IO Thread useful when only 1 virtual hard disk planned for my VM?

And what to do with the virtIO balloon driver?
I read that it is a good idea to do it without in order to avoid problems if there is plenty of physical memory available.
Do you agree to this statement?

And furthermore CPU: host vs. qemu64
I know that host ist generally recomended some guys/guides recommend host or qemu64 instead of kvm64.
Some guys (at reddit) declare that they saw an improvement when changing to qemu64.
Has anyone here tested if the one or the other performs better at his setup?



Thanks for sharing your experience!

PS: any other best practice and lessons learned for questions that I have not asked are highly welcome :)
 
Last edited:
First:
The default - if you choose Windows 10 - is to have already a optimized setup as the developers see fit.

what cache (local zfs underneath)
none, otherwise you will have double caching.

- which bus/device --> VirtIO Block or SCSI?
SCSI VirtIO

- SSD emulation yes/no?
Yes, best for I/O scheduler and also trimming support.

- IO Thread useful when only 1 virtual hard disk planned for my VM?
No, with one disk, you already have one I/O Thread.

I know that host ist generally recomended.
Why????
 
Lets say a OS is seeing a virtual HDD. HDDs should be defragmented for better performance, so it might do that. But defragmenting a CoW HDD pool or a SSD won't help anything but will just cause massive wear so it will fail sooner. Would be really bad if the guest OS tried to defrag the virtual HDD that sits ontop of a SSD so the SSD get defragmented. If you set it to emulate SSD the guest Os might see a virtual SSD and won't try to defragment it.
Or maybe some software will use bad default options because it tries to optimize the workload for slow HDDs by minimizing IOPS but that will decrease performance because that virtual HDD is actually on a fast physical SSD with more than needed IOPS performance.
So if you are using SSDs its not a bad thing to enable SSD emulation, so that the guest OS also thinks it is using SSDs.
 
Last edited:
  • Like
Reactions: LnxBil

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!