feat: add rs_iof kernel mode msquic perf tests#854
Open
Alan-Jowett wants to merge 4 commits into
Open
Conversation
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]>
There was a problem hiding this comment.
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: rsiofto thetest_quic_echoworkflow matrix and parameterizes an extra runner label viarunner_extra. - Adds/updates kernel-driver install logic to handle msquic.sys presence/loading, locked
.sysimages, and “zombie” service entries by cycling service names and normalizing ImagePath to a relative path. - Updates
Run-RecvTestto replace the client--servertarget 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.
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds rs_iof VMs to the
quicEchotest matrix innetwork-traffic-performance.ymlfor kernel mode msquic performance testing.Changes
Workflow (
network-traffic-performance.yml)os: rsiofmatrix entry totest_quic_echojob (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:system32\drivers\...) instead of absolute\??\C:\...— required on VMs with Code Integrity policy enforcementRun-RecvTest— replaces--server netperf-peerwith the local machine's hostname so the remote client connects back to the correct machineTest Results
Validated on rs_iof VMs (rr1-netperf-47/48):
Technical Notes
\??\absolute path format thatsc.exe creategenerates fails with ERROR_FILE_NOT_FOUND on these VMs despite the file being accessible. Using relative paths (like the msquic service itself) works reliably.sc.exe stop+sc.exe delete. The workaround is to rename the stale file before copying the new one.sc.exe deletemarks services for deletion but won't purge while the image is memory-mapped, creating zombie entries. The fallback to alternate service names handles this.