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 exposure

  • fallback='allow' → Allows degraded CPU model matching

  1. Compare CPU settings across compute nodes:

Confirm consistent entries such as:

  1. 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.

  1. Use strict CPU model matching in libvirt domain XML:

This prevents libvirt from falling back to a partially matched CPU configuration.

  1. 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.

  2. Optional graphics optimization (for GUI workloads): You may test the following flavor or image properties:

    • hw_video_model=virtio or hw_video_model=qxl

    • hw_graphics_type=vnc or hw_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