Ga naar hoofdinhoud
Proxmox Windows Best Practices

Best Practices for Windows VMs in Proxmox VE

1 February 2024
MadeMy Team
3 min leestijd
Best Practices for Windows VMs in Proxmox VE

Best Practices for Windows VMs in Proxmox VE

Windows VMs run excellently on Proxmox VE, but there are some optimizations that significantly improve performance and stability. In this article, we share our experience.

VM Hardware Configuration

CPU

CPU Type

Choose “host” as CPU type for best performance:

Hardware → Processors → Type: host

This gives the VM access to all CPU features of the host.

Cores vs Sockets

  • Windows Desktop: 1 socket, 2-8 cores
  • Windows Server: 1-2 sockets, 4-16 cores
  • Important: Windows licenses are socket-based

Memory

Ballooning

Disable memory ballooning for stable performance:

Hardware → Memory → Ballooning: No

Huge Pages

Consider 1GB huge pages for large VMs (>32GB RAM).

Storage

Disk Type: SCSI with VirtIO

Always use SCSI controller with VirtIO:

  1. HardwareAddHard Disk
  2. Bus/Device: SCSI
  3. Cache: Write back (with battery/UPS)
  4. Discard: Yes (for thin provisioning)
  5. IO thread: Yes

Disk Format

  • QCOW2: For backups and snapshots
  • RAW: For best performance (on ZFS/LVM)

Windows VirtIO Drivers

Install the VirtIO drivers:

  1. Download VirtIO ISO
  2. Mount in VM
  3. Install:
    • Balloon driver
    • NIC driver
    • SCSI driver
    • Serial driver

Network

VirtIO NIC

Always use VirtIO as NIC model:

Hardware → Network Device → Model: VirtIO

Multi-Queue

For high-performance networking, enable multi-queue:

Hardware → Network Device → Multiqueue: 8 (or CPU cores)

Guest Agent

Install the QEMU Guest Agent for better integration:

  1. Mount VirtIO ISO
  2. Install qemu-ga-x64.msi
  3. Check service status:
    1
    
    Get-Service QEMU-GA
    

Guest Agent Benefits

  • Correct shutdown
  • IP information in UI
  • Trim/discard support
  • Time synchronization

Windows Optimizations

Inside the VM

1. Power Plan

Set to High Performance:

1
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

2. Visual Effects

Minimize for server workloads:

System Properties → Performance Settings → Adjust for best performance

3. Services

Consider disabling unnecessary services:

  • Windows Search (for servers)
  • Superfetch/SysMain
  • Print Spooler (if not needed)

4. Disk Optimizations

1
2
3
4
5
# Disable defrag for SSDs
Optimize-Volume -DriveLetter C -Analyze

# Enable TRIM support
fsutil behavior set DisableDeleteNotify 0

Registry Tweaks

Timer Resolution

For better gaming/workload performance:

1
2
# HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
# Add DWORD: MaxThreadsPerQueue = 20

Backup Considerations

QEMU Guest Agent

Essential for consistent backups:

  • VSS (Volume Shadow Copy) support
  • Application-consistent snapshots

Backup Strategy

Proxmox Backup Server:
- Daily incrementals
- Weekly full backups
- Retention: 30 days

Monitoring

Key Metrics

Monitor these metrics:

  • CPU ready time (<5% is good)
  • Memory ballooning
  • Disk latency (<10ms)
  • Network packet loss

Tools

  • Proxmox built-in monitoring
  • Windows Performance Monitor
  • Grafana + InfluxDB (optional)

Common Issues

“No boot disk found”

  • Check boot order
  • VirtIO SCSI driver installed?

Slow network

  • Using VirtIO NIC?
  • Multi-queue configured?

High CPU usage

  • Check CPU ready time
  • Sufficient memory allocated?
  • Ballooning disabled?

Performance Comparison

ConfigurationIOPSLatencyCPU Usage
IDE (default)5K15ms100%
SCSI (LSI)15K8ms80%
SCSI (VirtIO)50K+2ms40%

Average values on NVMe storage

Conclusion

With the right configuration, Windows VMs run excellently on Proxmox VE. The key takeaways:

  1. Use VirtIO for storage and network
  2. Install Guest Agent
  3. Optimize Windows settings
  4. Monitor performance metrics

Need help optimizing your Windows VMs? Contact us.

Tags

#windows #performance #optimization

Deel dit artikel