Skip to content

VMM.Perf: add Windows support - #4376

Merged
Trevor Jones (tjones60) merged 15 commits into
microsoft:mainfrom
ayusharora221204:user/ayusharora/vmmperf-windows
Sep 8, 2026
Merged

VMM.Perf: add Windows support#4376
Trevor Jones (tjones60) merged 15 commits into
microsoft:mainfrom
ayusharora221204:user/ayusharora/vmmperf-windows

Conversation

@ayusharora221204

@ayusharora221204 ayusharora221204 commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add the pinned Windows x64 VMM.Perf runtime and use WHP for native Windows execution
  • add dedicated AMD and Intel Windows VMM.Perf jobs for CI and opt-in PR-release validation
  • use fixed default sizing of 16 CPUs and 64 GiB, while preserving explicit VM-size overrides
  • publish x64-windows-amd-vmm-perf-results and x64-windows-intel-vmm-perf-results through the existing Azure metrics upload flow
  • reuse the existing install_vmm_tests_external_deps Flowey step to enable Windows Hyper-V/WHP management components while preserving Linux KVM/MSHV device and huge-page preparation
  • fix DIO queue teardown hangs observed during the UEFI-to-Linux handoff by using CancelIoEx(handle, NULL) to cancel pending overlapped I/O regardless of the issuing thread

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
Copilot AI lite review requested due to automatic review settings September 3, 2026 11:46
@ayusharora221204
ayusharora221204 requested review from a team as code owners September 3, 2026 11:46
@github-actions github-actions Bot added the Guide label Sep 3, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The updated unit test in virtual_client.rs has been weakened enough that it can pass even if the path resolution is incorrect, and should be strengthened to assert the expected canonicalized path.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Integrates Windows x64 support for running VMM.Perf locally and in CI, including downloading a pinned Windows runtime package and adding Windows AMD/Intel perf runs to existing Flowey-driven pipelines.

Changes:

  • Add Windows path normalization for VMM.Perf work-dir base resolution and relax the corresponding unit test.
  • Switch default VMM.Perf VM sizing to a fixed 16 vCPU / 64 GiB shape (while still validating requested capacity).
  • Extend Flowey pipelines and generated CI workflows to build/publish Windows VMM.Perf runner artifacts and run dedicated Windows perf jobs.
File summaries
File Description
vmm_tests/vmm_perf/src/virtual_client.rs Normalize canonicalized Windows paths for VMM.Perf virtual client consumption; adjust unit test.
vmm_tests/vmm_perf/src/config.rs Change default config generation to a fixed 16 vCPU / 64 GiB shape with capacity validation.
Guide/src/dev_guide/dev_tools/xflowey.md Document Windows x64 host support and the new default VM shape.
flowey/flowey_lib_hvlite/src/download_vmm_perf_runtime.rs Add Windows x64 runtime archive + checksum support and select runtime by host platform.
flowey/flowey_hvlite/src/pipelines/vmm_perf.rs Add windows-x64 target and default target selection based on host OS.
flowey/flowey_hvlite/src/pipelines/checkin_gates.rs Publish Windows VMM.Perf runner artifacts and wire them into perf job setup.
ci-flowey/openvmm-pr.yaml Generated pipeline updates to build/publish VMM.Perf runner artifacts.
.github/workflows/openvmm-pr.yaml Generated workflow updates reflecting new artifacts/steps.
.github/workflows/openvmm-pr-release.yaml Generated workflow updates adding Windows VMM.Perf perf jobs for opt-in PR release validation.
.github/workflows/openvmm-ci.yaml Generated workflow updates adding Windows VMM.Perf perf jobs to CI.
Review details
  • Files reviewed: 10/10 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread vmm_tests/vmm_perf/src/virtual_client.rs
Comment thread vmm_tests/vmm_perf/src/config.rs Outdated
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
Copilot AI review requested due to automatic review settings September 3, 2026 12:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

There are unresolved review items affecting correctness of stated scope (PR description vs enabled pipelines) and CI efficiency/clarity (unused artifacts plus needed messaging/docs tweaks for the new fixed default VM sizing).

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 10/10 changed files
  • Comments generated: 5
  • Review effort level: Lite

Comment thread flowey/flowey_hvlite/src/pipelines/checkin_gates.rs Outdated
Comment thread flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
Comment thread vmm_tests/vmm_perf/src/config.rs Outdated
Comment thread vmm_tests/vmm_perf/src/virtual_client.rs
Comment thread Guide/src/dev_guide/dev_tools/xflowey.md Outdated
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
Copilot AI review requested due to automatic review settings September 3, 2026 13:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It makes broad, platform-sensitive changes across multiple CI/workflow pipelines and execution paths (Linux+Windows), which warrants a final human review of the end-to-end CI behavior.

Review details

Suppressed comments (3)

vmm_tests/vmm_perf/src/config.rs:190

  • If the fixed default VM shape (16 vCPUs / 64 GiB) exceeds host capacity, the error comes from validate_requested_capacity and doesn’t mention how to override the defaults. Adding context here would make the failure actionable (e.g., point at --vmm-perf-vmsizes / --parameters-json).
    super::host::validate_requested_capacity(&parameters, capacity)?;

flowey/flowey_hvlite/src/pipelines/checkin_gates.rs:558

  • This adds a Windows VMM.Perf runner artifact for both aarch64 and x86_64 (e.g. aarch64-windows-vmm-perf-runner), but there are no consumers for the aarch64 artifact in this pipeline. Building + publishing an unused artifact increases CI time and storage; consider gating VMM.Perf runner builds/artifacts to x86_64 until an aarch64 run job is added.
            let (pub_vmm_tests_archive, use_vmm_tests_archive) =
                pipeline.new_typed_artifact(format!("{arch_tag}-windows-vmm-tests-archive"));
            let (pub_vmm_perf, use_vmm_perf) =
                pipeline.new_typed_artifact(format!("{arch_tag}-windows-vmm-perf-runner"));

vmm_tests/vmm_perf/src/virtual_client.rs:421

  • This test only exercises the path resolution logic, but doesn’t validate the Windows-only path rewriting (stripping the \?\ prefix / UNC normalization) that this change introduces. Adding a Windows-only assertion here would prevent regressions in the main behavior change.
        let resolved = resolve_work_dir_base("relative-base", &runtime_dir)?;
        assert!(resolved.is_absolute());
        assert!(resolved.ends_with("relative-base"));
        assert_eq!(
            resolved,
  • Files reviewed: 12/12 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
Copilot AI review requested due to automatic review settings September 3, 2026 16:41

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It makes broad, cross-cutting changes to Flowey pipelines and generated CI workflows (including new Windows perf jobs/artifacts), which warrants careful human validation of CI behavior and resource impact.

Review details

Suppressed comments (1)

flowey/flowey_hvlite/src/pipelines/checkin_gates.rs:557

  • The Windows aarch64 build path appears to publish a *-windows-vmm-perf-runner artifact even though the only VMM.Perf execution jobs added here are x64 Windows (and only use_vmm_perf_runner_windows_x64 / use_vmm_perf_openvmm_windows_x64 are wired up). This means the aarch64-windows VMM.Perf runner build/publish work is likely unused extra CI cost; either wire up a consumer for the aarch64 runner or gate the build/publish to x86_64 Windows only.
            let (pub_test_igvm_agent_rpc_server, use_test_igvm_agent_rpc_server) = pipeline
                .new_typed_artifact(format!("{arch_tag}-windows-test_igvm_agent_rpc_server"));

            let (pub_vmm_tests_archive, use_vmm_tests_archive) =
                pipeline.new_typed_artifact(format!("{arch_tag}-windows-vmm-tests-archive"));
            let (pub_vmm_perf, use_vmm_perf) =
                pipeline.new_typed_artifact(format!("{arch_tag}-windows-vmm-perf-runner"));
  • Files reviewed: 12/12 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
Copilot AI review requested due to automatic review settings September 4, 2026 04:23

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It makes broad, cross-platform changes spanning VMM.Perf runtime behavior and multiple CI/workflow pipelines that need human validation in real CI environments.

Review details
  • Files reviewed: 14/14 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread vmm_tests/vmm_perf/src/runtime.rs Outdated
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
Copilot AI review requested due to automatic review settings September 4, 2026 06:57
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown

Update the pinned runtime to 20260906.1, add the Windows ARM64 archive, and run VMM.Perf on the ARM64 bare-metal pool. Remove temporary forced serial logging and failed seeded-disk publication while retaining the local runtime archive override.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
Copilot AI review requested due to automatic review settings September 7, 2026 06:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The implemented CI pipeline adds an ARM64 Windows VMM.Perf job that is not reflected in the PR description, so the scope/intent needs alignment (doc update or code adjustment) before approval.

Review details

Suppressed comments (1)

flowey/flowey_hvlite/src/pipelines/checkin_gates.rs:1874

  • The PR description mentions adding dedicated AMD/Intel Windows VMM.Perf jobs (and a pinned Windows x64 runtime), but this pipeline also schedules an additional aarch64-windows VMM.Perf job. If ARM64 Windows coverage is intentional, the PR description (and any release/CI notes) should be updated to mention the extra job/runtime; otherwise, remove this entry to keep CI scope aligned with the stated intent.
                (
                    "aarch64-windows",
                    FlowPlatform::Windows,
                    FlowArch::Aarch64,
                    CommonArch::Aarch64,
  • Files reviewed: 14/14 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Ayush Arora added 2 commits September 7, 2026 13:34
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

Remove the ARM64 Windows VMM.Perf job until the GNU sparse VHD extraction issue is fixed. Keep runtime 20260906.1 and the existing x64 VMM.Perf jobs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
Copilot AI review requested due to automatic review settings September 7, 2026 16:19

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It makes broad CI/pipeline changes and adds new Windows-host execution paths whose correctness and stability depend on external environment/runtime assumptions best validated by a human reviewer and CI results.

Review details
  • Files reviewed: 14/14 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

Run VMM.Perf after merge or through the opt-in release PR pipeline instead of regular PR validation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
Copilot AI review requested due to automatic review settings September 8, 2026 04:36

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The updated cargo xflowey vmm-perf Guide text states the default scratch dir is target/vmm_perf/temp, but the pipeline actually uses target/vmm_perf/t, which will mislead users.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 14/14 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread Guide/src/dev_guide/dev_tools/xflowey.md Outdated
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: ec48d4d4-a0ec-4ddb-958e-e2646e09f96d
Copilot AI review requested due to automatic review settings September 8, 2026 08:34

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Windows VMM.Perf jobs in openvmm-ci.yaml are gated on github.event.pull_request even though the workflow runs on push/dispatch, so those jobs will never run.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (1)

.github/workflows/openvmm-ci.yaml:7199

  • Same issue as job30: this workflow runs on push/workflow_dispatch, so gating on github.event.pull_request.draft will skip the job entirely in CI.
    needs:
    - job6
    - job7
    if: github.event.pull_request.draft == false
    steps:
  • Files reviewed: 14/14 changed files
  • Comments generated: 1
  • Review effort level: Lite

needs:
- job6
- job7
if: github.event.pull_request.draft == false
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Comment thread vm/devices/net/vmswitch/src/dio.rs
Comment thread flowey/flowey_lib_hvlite/src/_jobs/setup_and_run_vmm_perf.rs
@tjones60 Trevor Jones (tjones60) added the release-ci-required Add to a PR to trigger PR gates in release mode label Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

@tjones60 Trevor Jones (tjones60) changed the title Follow up: Integrate VMM.Perf for Windows VMM.Perf: add Windows support Sep 8, 2026
@tjones60
Trevor Jones (tjones60) merged commit e5d7246 into microsoft:main Sep 8, 2026
137 of 143 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Guide release-ci-required Add to a PR to trigger PR gates in release mode unsafe Related to unsafe code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants