Windows 11 Virtual Machine very slow performance

guil_gp

New Member
Feb 2, 2023
3
0
1
Hi,
I try to create some Windows 11 virtual machine but they are very slow.

I try with multi conf to have the better performance but i haven't solved the issue.

Proxmox server version : 7.3-4
Server hard drive: SSD

My virtual machine :
Hardware :
Memory : 4go
CPU : 2 socket & 2 cores
BIOS : OVMF (UEFI)
Display : default
machine : pc-q35-7.1
SCSI Controller : Virtio SCSI Single
Hard disk : sata - no cache - SSD Emulation - Async IO Default
Network : Intel e1000

Do you have any idea?
 
Hi,
Some people had a windows vm work fine ? can i have the hardware and options ?

Thanks
 
When it comes to performance, consider using virtio.

At first you should choose Hard-disk SCSI an not SATA. Network also: choose virtio instead of e1000.
 
  • Like
Reactions: ThinkYEAH
Please share the output of qm config VMID, so we can see the exact configuration.
How do you notice the slowness?
 
Hi,

Thanks, this is my conf :

agent: 1
bios: ovmf
boot: order=sata0;ide2;net0;ide0
cores: 4
efidisk0: vmdata:vm-805-disk-0,efitype=4m,pre-enrolled-keys=1,size=1M
hotplug: disk,network,usb,cpu
ide0: local:iso/Virtio-win-driver.iso,media=cdrom,size=522284K
ide2: none,media=cdrom
machine: pc-q35-7.1
memory: 4096
meta: creation-qemu=7.1.0,ctime=1675258342
name: W11
net0: virtio=B2:A4:BA:B1:4F:61,bridge=vmbr3,firewall=1
numa: 0
onboot: 1
ostype: win11
sata0: backup:805/vm-805-disk-0.qcow2,cache=writeback,size=30G
scsihw: virtio-scsi-single
smbios1: uuid=8e86cb75-e1b6-4a78-a105-e0a3fece1525
sockets: 2
tpmstate0: vmdata:vm-805-disk-1,size=4M,version=v2.0
vmgenid: 51a5566e-8e16-4ee9-97e4-94d3a215a2bf
 
Some very low hanging fruits:
set CPU type = host (the default kvm64 is incredibly slow) - note that this potentially breaks live migration
set numa: 1 if you have more than one socket on the host (why does your guest have two sockets?)
enable iothread on harddisk

https://pve.proxmox.com/wiki/Performance_Tweaks
 
I had a very bad performance with Windows 10 and 11 on virtio network. When I changed it to Intel E1000 performance became good.
 
i can confirm it works for windows 2022 server too
the only input - without balloning the ram was 80% (of 8gb) with balloing 12%
 
Last edited:
Use VirtIO-GPU (or even better, VirGL) and set display memory to 512.
 
When it comes to performance, consider using virtio.

At first you should choose Hard-disk SCSI an not SATA. Network also: choose virtio instead of e1000.
This isn't the issue, I have these exact same settings yet simply trying to open a browser takes upto a minute, my many ubuntu servers are fine. Windows is unusable.
 
If your windows 11 Core isolation -> Memory Integrity is enabled, the performance will be BAD in VM. Try to disable it then reboot VM.
 
Can you explain this?
Windows 11 VM already use hardware virtualization to create a virtual environment. With Memory Integrity active on the host, you’re essentially running virtualization within virtualization (nested virtualization). This adds extra layers of processing, as the CPU has to manage both the host’s VBS and the VM’s virtualized environment. Not all processors handle this efficiently, leading to performance degradation.
 
  • Like
Reactions: _gabriel
I’m not sure why, but when I enable Memory Integrity and later discover it impacts performance, I turn it off again. However, even after disabling it, the performance remains poor. Similarly, when I install WSL (Windows Subsystem for Linux) or Docker, I notice the same bad performance, likely because they also create virtual environments. After these changes, I often have to restore a backup from a state before enabling Memory Integrity or installing WSL/Docker to regain the original performance. I suspect my CPU might not be powerful enough to handle these features efficiently. I’m using an Intel Core i7-8700K.
 
AFAIK, turning on "Memory integrity" enable VBS , but turning back off keep VBS running.
VBS running status can be check from "msinfo32.exe".
A way to disable nested virtualization is to set vCPU type to "x86-64-AES" which prevent VBS/HyperV/WSL
 
  • Like
Reactions: raydotac
AFAIK, turning on "Memory integrity" enable VBS , but turning back off keep VBS running.
VBS running status can be check from "msinfo32.exe".
A way to disable nested virtualization is to set vCPU type to "x86-64-AES" which prevent VBS/HyperV/WSL
It’s good to know that! Thank you!
 
I would really like to see an effort made to solve the nested virtualization problems so that we can use VBS in windows guests efficiently. I suspect the problem is not specific to Proxmox, rather KVM/QEMU specifically and any projects that use these. If anyone has any insight into what part of the software stack needs help to resolve, I'm interested in offering a bounty to solve this one.