Windows VM Performance Degradation on PCD
Problem
Windows 24H2 and Windows Server 2025 VMs running on PCD show noticeably slower performance compared to similar VMs running on other KVM-based platforms such as Proxmox.
Environment
Private Cloud Director Virtualization - v2025.4 and Higher
Self-Hosted Private Cloud Director Virtualization - v2025.4 and Higher
Component: Compute Service
Cause
The performance degradation was traced to inconsistent CPU model exposure and topology configuration across compute nodes.
When libvirt launches a Windows VM, it attempts to match the CPU model defined in its XML configuration. If the match is partial, the guest OS receives fewer CPU instruction flags, leading to reduced optimization and slower performance.
Additionally, default VM topology settings (e.g., sockets=4 cores=1 threads=1) can cause Windows to detect multiple single-core CPUs instead of a single multi-core processor. This results in:
Higher inter-socket latency
Reduced cache efficiency
Suboptimal thread scheduling by the Windows kernel
Diagnostics
1. Check CPU configuration for the affected VM from the hosted Compute Node:
Look for:
check='partial'→ Indicates incomplete CPU feature exposurefallback='allow'→ Allows degraded CPU model matching
Compare CPU settings across compute nodes:
Confirm consistent entries such as:
Verify host hardware consistency:
Ensure that all compute nodes have the same CPU model and features. 4. Verify no third-party application such as an anti-virus or hardening application is contributing towards slowness.
Resolution
1. Define explicit CPU topology in the flavor:
This configuration ensures Windows detects a single multi-core processor, improving scheduling and cache utilization.
Use strict CPU model matching in libvirt domain XML:
This prevents libvirt from falling back to a partially matched CPU configuration.
Guest OS optimizations:
Verify that the DiagTrack (Connected User Experiences and Telemetry) service is enabled. Disabling it may negatively impact performance.
Review Virtualization-Based Security (VBS) settings — in some cases, disabling VBS may reduce overhead and improve responsiveness.
Optional graphics optimization (for GUI workloads): You may test the following flavor or image properties:
hw_video_model=virtioorhw_video_model=qxlhw_graphics_type=vncorhw_graphics_type=spice
Additional Information
Using strict CPU model matching and explicit topology can yield 10–15% performance improvement in CPU-bound Windows workloads.
Linux guests are generally unaffected, as they handle partial CPU model exposure more gracefully.
Last updated
