RTX 5060 Blackwell + WSL2: Periodic 3.1s paravirt stall at exact 35.5s intervals (inference workload)
TL;DR
-
Hardware: NVIDIA GeForce RTX 5060 (consumer Blackwell)
-
Environment: Windows 11 + WSL2 + Docker, ONNX Runtime + TensorRT inference
-
Symptom: A stall of 3.1~3.8 seconds occurs at exactly 35.5-second intervals. The GPU itself keeps running; the paravirt layer halts the guest’s new requests.
-
NVIDIA driver: 591.86 → 595.97 — nearly no change.
-
WSL: 2.6.3.0 → 2.7.5.0 — stall duration reduced by ~17% (3.78s → 3.13s). However, the period and frequency remain unchanged.
-
Request: Is NVIDIA aware of this regression? Are there reports of identical symptoms? Are there fix plans in upcoming driver/WSL updates?
1. Environment
| Item | Value |
|---|---|
| GPU | NVIDIA GeForce RTX 5060 (8GB, consumer Blackwell) |
| CPU + motherboard | AMD Ryzen desktop |
| Windows | Windows 11 (build 26200.8246) |
| Secondary GPU | AMD Radeon iGPU (separate LUID, used by dwm/G2Client.exe) |
| WSL kernel | 6.18.26.1-microsoft-standard-WSL2 |
| WSL version | 2.7.5.0 (preview channel) |
| NVIDIA driver | 595.97 (WDDM mode) |
| CUDA | 13.2 (host) / 12.9 (container) |
| Container | Ubuntu 24.04 in Docker, gRPC server with TensorRT + ONNX Runtime + Python 3.10 |
| Workload | CCTV face/plate recognition, sustained load of ~5.3 fps plate + ~4.1 fps face |
| GPU process | The only user of RTX 5060 is vmwp.exe (WSL2 VM Worker) |
2. Symptom
On an inference server running 24/7, all GPU requests stall for 3.1 seconds at exact 35.5-second intervals.
Measurement results:
| Item | Value |
|---|---|
| Stall period | 35.39s (deviation ±0.5s, CV < 1.5%) |
| Stall duration | Average 3.13s (range 3.03~3.21s, on WSL 2.7.5 + driver 595.97) |
| Normal latency before stall (Plate p50) | 49ms |
| Normal latency before stall (Plate p99) | 103ms |
| Max latency during stall (Plate) | 3,044ms |
| Stall count in 30-min measurement | 50 (matches the 35.5s period exactly) |
The frequency and period of the stall remain identical after container restart, WSL restart, or OS reboot.
3. Mechanism narrowed by diagnostics
Through multi-layered measurement with strace, py-spy, ETW (Windows Performance Recorder), wpr GPU profile, and dxgkrnl event trace:
What stays alive during the stall
-
The GPU itself: ETW dxgkrnl event rate stays identical to baseline during the stall (~120,000 events/sec). The GPU never stops.
-
WSL guest Linux scheduling: Pure Python sleep, fork+exec, /proc reads all proceed normally during the stall.
-
Existing ioctl calls to /dev/dxg: Respond within ≤ 23ms during the stall.
What halts during the stall
-
All GPU clients inside the WSL guest: All worker threads in server.py block in futex_wait at the same instant for 3.7 seconds.
-
Host’s nvidia-smi:
nvidia-smi --query-gpuon the Windows host also hangs for 3.7 seconds at the same time. -
Launching a new nvidia-smi process: If you invoke
strace nvidia-smimid-stall, you getstrace: Cannot find executable 'nvidia-smi'. The 9P filesystem mount at/usr/lib/wsl/lib/becomes unreachable.
Conclusion (from measurements)
The stall does not happen at the dxgkrnl internal lock level — it happens at the Hyper-V VM bus / paravirt layer. The guest’s new GPU/9P requests are halted for about 3 seconds every 35.5 seconds, while in-flight GPU work and host-side dxgkrnl event processing continue normally.
4. Workarounds tried (all ineffective or marginal)
| Attempt | Result |
|---|---|
nvidia-smi -pm 1 (persistence mode already enabled) |
No change |
| NVCP Power Management “Prefer Maximum Performance” | No change |
| NVCP Low Latency Mode On/Ultra | No change |
GPU clock lock (nvidia-smi -lgc) |
No change |
GPU keepalive sidecar (cudaMalloc/Free every 300ms) |
No change |
| OpenCV/ORT threadpool tuning | No change |
| Python GC disable | No change |
Docker namespace bypass (--network host) |
No change |
| gRPC keepalive tuning | No change |
| NVIDIA driver 591.86 → 595.97 update | Negligible (<1% change in stall duration) |
| WSL 2.6.3.0 → 2.7.5.0 update (preview channel) | ~17% reduction in stall duration (3.78s → 3.13s). Period/frequency unchanged. |
Only the WSL update produced meaningful improvement. The NVIDIA driver update had negligible effect.
5. Measurement comparison
| Stage | Stalls (5min) | Stall duration | Plate p50 / p95 / p99 / max |
|---|---|---|---|
| Baseline (driver 591.86 + WSL 2.6.3) | 9 | 3.74 ~ 3.86s | 44 / 89 / 118 / 3,661 ms |
| After WSL 2.7.5 | 9 | 3.09 ~ 3.17s | 46 / 88 / 106 / 3,045 ms |
| WSL 2.7.5 + driver 595.97 | 9 | 3.03 ~ 3.13s | 49 / 87 / 103 / 3,044 ms |
The same pattern reproduces consistently in 30-min long-run measurements (50 stalls, average period 35.39s).
6. Related cases from other users
I found unresolved reports with similar patterns on the NVIDIA Developer Forum:
-
RTX PRO 4000/2000 Blackwell + Windows WDDM: 102ms periodic spike, did not occur on Ada Lovelace GPUs in the same PC (forum thread 357475)
-
RTX 5060 Ti + WSL2 + Docker Desktop: nvlddmkm.sys DPC latency surge after 8 hours idle (forum thread 369079)
-
RTX 5090 + vLLM + WSL2: CUDA graph capture crashes → fixed by WSL 2.7.0 preview (microsoft/WSL issue 14452)
-
RTX PRO 6000 + WSL2: System hang → fixed by WSL 2.7.0 preview (Allen Kuo’s Medium post)
These cases do not have our exact 35.5s period, but all suggest a paravirt layer regression in Blackwell + Windows/WSL environments. The partial effectiveness of WSL 2.7.x updates is also a common thread.
7. User impact
In a 24/7 production environment:
-
About 2,434 stalls per day (35.5s period × 24 hours)
-
Cumulative stall time: about 2.1 hours
-
About 124 frames per hour experience 3-second spike latency
-
Significant impact on real-time inference workloads (CCTV, access control, etc.)
The GPU itself is fine, but because the paravirt layer is periodically halted, applications requiring real-time responsiveness face severe limitations.
8. Questions and requests
-
Is NVIDIA aware of this regression? Are there other reports of stall patterns occurring at a precise period (35.5s) on consumer Blackwell (RTX 5060/5070/5080/5090) + WSL2 + WDDM paravirt?
-
Are there driver-side fix plans? Neither 595.97 nor 596.49 (released 2026-05-12) release notes mention fixes directly related to our symptom. Can we expect paravirt-related fixes in upcoming driver releases?
-
Willing to provide additional workarounds or diagnostic data: I can provide our measurement data (strace logs, ETW traces, 30-min long-run measurements, etc.) to NVIDIA’s driver team. Please let me know what additional data would help with diagnosis.
-
Users with the same symptom: If any RTX 50 series users reading this experience stalls at an exact 35.5-second period with ~3-second duration, please comment. It is likely the same regression, and collecting cases together would help raise NVIDIA’s priority for this issue.
Available data (on request)
-
30-minute G probe log (precise timestamps of stall occurrence and duration)
-
Server-side latency distribution (statistics from 10,400+ frames)
-
ETW dxgkrnl trace analysis (event distribution within stall windows)
-
strace output (nvidia-smi and server.py worker thread during stall)
-
Syscall analysis at various stall moments