Skip to content

feat: add rs_iof kernel mode msquic perf tests#854

Open
Alan-Jowett wants to merge 4 commits into
microsoft:mainfrom
Alan-Jowett:main
Open

feat: add rs_iof kernel mode msquic perf tests#854
Alan-Jowett wants to merge 4 commits into
microsoft:mainfrom
Alan-Jowett:main

Conversation

@Alan-Jowett

@Alan-Jowett Alan-Jowett commented May 29, 2026

Copy link
Copy Markdown
Member

Summary

Adds rs_iof VMs to the quicEcho test matrix in network-traffic-performance.yml for kernel mode msquic performance testing.

Changes

Workflow (network-traffic-performance.yml)

  • Added os: rsiof matrix entry to test_quic_echo job (env: lab, arch: x64)

Script (run-quic-echo-test.ps1)

  • Ensure-MsQuicLoaded — verifies msquic.sys driver is loaded before starting WinQuicEcho (PE import dependency)
  • Install-LocalWinQuicEchoKmDriver / Install-RemoteWinQuicEchoKmDriver:
    • Uses relative ImagePath (system32\drivers\...) instead of absolute \??\C:\... — required on VMs with Code Integrity policy enforcement
    • Handles file-locked .sys files by renaming stale copies (kernel memory mapper holds locks even after unload)
    • Falls back through alternate service names when zombie service entries block creation
    • Robust stop verification with retry loop for remote installs
  • Run-RecvTest — replaces --server netperf-peer with the local machine's hostname so the remote client connects back to the correct machine

Test Results

Validated on rs_iof VMs (rr1-netperf-47/48):

  • Send phase: ~5,800 RPS, 173K requests, 0 errors ✅
  • Recv phase: ~4,500 RPS, 136K requests, 0 errors ✅
  • Successful runs: 26670140170, 26670427995

Technical Notes

  • The \??\ absolute path format that sc.exe create generates fails with ERROR_FILE_NOT_FOUND on these VMs despite the file being accessible. Using relative paths (like the msquic service itself) works reliably.
  • Kernel driver .sys files remain memory-mapped after sc.exe stop + sc.exe delete. The workaround is to rename the stale file before copying the new one.
  • sc.exe delete marks services for deletion but won't purge while the image is memory-mapped, creating zombie entries. The fallback to alternate service names handles this.

@Alan-Jowett Alan-Jowett enabled auto-merge (squash) May 29, 2026 19:45
Add rs_iof VMs to the quicEcho test matrix for kernel mode msquic
performance testing via the network-traffic-performance workflow.

Key changes to run-quic-echo-test.ps1:
- Ensure-MsQuicLoaded: helper to verify msquic.sys is loaded before
  starting the WinQuicEcho kernel driver (PE import dependency)
- Install-LocalWinQuicEchoKmDriver / Install-RemoteWinQuicEchoKmDriver:
  - Use relative ImagePath (system32\drivers\...) instead of absolute
    \??\C:\... path — matches msquic's format and is required on VMs
    with Code Integrity policy enforcement
  - Handle file-locked .sys files by renaming stale copies
  - Fall back through alternate service names when zombie service
    entries from prior sc.exe delete block creation
  - Robust stop verification with retry loop for remote installs
- Run-RecvTest: replace --server with local hostname so the remote
  client connects back to the correct machine

Workflow matrix addition:
- os: rsiof, env: lab, arch: x64 in test_quic_echo job

Validated: both send (~5800 RPS) and recv (~4500 RPS) phases pass
with 0 errors on rs_iof VMs (run 26670427995).

Co-authored-by: Copilot <[email protected]>
@Alan-Jowett Alan-Jowett changed the title Add rs_iof VMs to quicEcho test matrix for kernel mode msquic perf tests feat: add rs_iof kernel mode msquic perf tests May 30, 2026
@Alan-Jowett Alan-Jowett requested a review from Copilot June 1, 2026 21:45

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR extends the QUIC echo performance workflow to include rs_iof lab runners and hardens the run-quic-echo-test.ps1 driver-install flow to better support kernel-mode WinQuicEcho + msquic.sys on CI-enforced VMs.

Changes:

  • Adds os: rsiof to the test_quic_echo workflow matrix and parameterizes an extra runner label via runner_extra.
  • Adds/updates kernel-driver install logic to handle msquic.sys presence/loading, locked .sys images, and “zombie” service entries by cycling service names and normalizing ImagePath to a relative path.
  • Updates Run-RecvTest to replace the client --server target with the local machine hostname so the remote client connects back to the correct host.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 7 comments.

File Description
.github/workflows/network-traffic-performance.yml Adds an rsiof entry to the QUIC echo lab matrix and makes the extra runner label configurable per matrix entry.
.github/scripts/run-quic-echo-test.ps1 Adds msquic load checks and more robust local/remote kernel driver deployment behavior; adjusts recv-mode client targeting.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/scripts/run-quic-echo-test.ps1
Comment thread .github/scripts/run-quic-echo-test.ps1 Outdated
Comment thread .github/scripts/run-quic-echo-test.ps1 Outdated
Comment thread .github/scripts/run-quic-echo-test.ps1 Outdated
Comment thread .github/scripts/run-quic-echo-test.ps1
Comment thread .github/scripts/run-quic-echo-test.ps1 Outdated
Comment thread .github/scripts/run-quic-echo-test.ps1 Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

Comment thread .github/scripts/run-quic-echo-test.ps1 Outdated
Comment thread .github/scripts/run-quic-echo-test.ps1 Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

Comment thread .github/scripts/run-quic-echo-test.ps1
Comment thread .github/scripts/run-quic-echo-test.ps1
Comment thread .github/scripts/run-quic-echo-test.ps1 Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants