Six steps. About 30 minutes plus a reboot. Every fix was measured on a real rig, and every one is reversible.
Curious how it works? The idea Β· Deep detail? Reference Β· Problems? Troubleshooting
Your CPU has two halves: a V-Cache die (games love it) and a frequency die. Stutters happen when Windows lets background work β GPU interrupts, antivirus scans, update tasks β fight the sim for the V-Cache die. The fix: put the sim there, move everything else off, and stop Windows from interrupting. That's all six steps do.
Your whole CPU is one V-Cache die β nothing to pin, which makes this simpler for you. Your stutters come from Windows letting background work β GPU interrupts, antivirus scans, update tasks, a Windows 11 timer quirk β pile onto the cores the sim is using. The fix: stop Windows from interrupting. The steps below skip the core-pinning parts automatically for your chip.
| CPU | V-Cache die (sim goes here) | Frequency die (everything else) |
|---|---|---|
| 9950X3D / 7950X3D | logical cores 0β15 | logical cores 16β31 |
| 9900X3D / 7900X3D | logical cores 0β11 | logical cores 12β23 |
Your chip (7800X3D / 9800X3D / 5800X3D) is a single 8-core die β all 16 threads share the V-Cache, so Rules 1 and 2 below don't apply to you (nothing to pin, no die to keep clear). Rules 3 and 4, and every automatic fix, still do.
Rule 1 β EasyAntiCheat blocks hard CPU affinity. Pinning iRacing the forceful way gets reverted seconds after launch. We use CPU Sets (a scheduler hint EAC can't block). The affinity mask still reading 0xFFFFFFFF afterward is normal, not a failure.
Rule 2 β All cores unparked, NOT the Balanced plan. Single-CCD guides recommend Balanced; on a dual-CCD chip with VR, Balanced's core parking strands the VR compositor on a parked die and starves the GPU (measured: ~55% GPU util β 11%, unplayable). Single-CCD chips are the opposite β keep Balanced.
Rule 3 β The Windows 11 focus/timer trap. Windows only honors a game's 1 ms timer while it owns window focus β and the VR compositor steals focus constantly, dropping the timer to 15.6 ms mid-race. Signature: stutters that stop the moment you click the sim window. Step 3 fixes it permanently.
Rule 4 β Measure, don't guess. Change one thing, log a race, compare. The kit's tools do the logging for you.
Adapted for dual-CCD from the single-CCD guide by rcsracing93 β see what flips and why.
In order. Boxes remember themselves, so you can leave and come back β there's a reboot in the middle anyway.
Download the .zip and unzip to a folder you'll keep β e.g. C:\iRacingTuning\. Not Downloads, not the desktop clutter β things reference this folder later.
One free app does the two fixes no script can: Process Lasso (the free version does everything needed).
iRacingSim64DX11.exe shows up in Process Lasso's list. Then you can exit.iRacingSim64DX11.exe β CPU Sets (β not CPU Affinity) β select cores 0β15.EasyAntiCheat rejects hard affinity β the sim reverts to all cores seconds after launch. CPU Sets are a scheduler hint EAC can't block, and they work just as well.
Optional extras in Process Lasso: put background apps (VR runtime, SimHub, overlays, wheel software, browsers) on the frequency die (cores 16β31), and give iRacing High CPU/I/O/memory priority. Nice-to-haves, not required.
If you use ParkControl (same developer): set Parking = Off and untick βDynamic Boostβ β it flips the power plan mid-race and caused our worst hard freezes.
If you already run Process Lasso, one nice-to-have: right-click iRacingSim64DX11.exe β ProBalance β exclude, so it's never throttled. No CPU Sets, no power-plan change. If you don't have it, don't bother installing it just for this.
In the kit folder, double-click Apply-Baseline.bat. It confirms your CPU, shows a short advisory, then applies all five script fixes in one window with one admin prompt. Nothing to type.
The fast path β everything in one go.
Prefer one step at a time, with each explained? The guided menu does the same fixes plus troubleshooting tools and undos.
Every fix has an undo: Start-Tuning-Menu.bat β Advanced. Registry, power, and Defender changes only β no drivers, no overclocking.
Each fix is a readable .ps1 in scripts\ (browse them, and see scripts\README.txt). Run one with:
powershell -ExecutionPolicy Bypass -File "path\to\script.ps1"
Setting-changers need an elevated PowerShell (Start β type PowerShell β right-click β Run as administrator). Or run Create-Launchers.ps1 once to get double-click shortcuts that self-elevate. 12-core chips: the launchers and menu set your core numbers automatically; only pure-manual runs need the one-line edit described in scripts\README.txt.
The GPU-interrupt and timer fixes only take effect after a restart. Do it now β the boxes will still be ticked when you're back.
What good looks like: no skipped seconds in the timestamp column. A jump like 12:04:40 β 12:04:42 is a stall β none means zero system-wide hiccups.
power_plan β should stay on your unparked plan the whole session (a mid-race flip = ParkControl Dynamic Boost, see Step 2).ccd0_cpu vs ccd1_cpu β CCD0 busier = the sim is on the V-Cache die where it belongs.cpu0_int low, freqcore_int higher β GPU interrupts moved off the sim's core.gpu_util β steady, no collapses to single digits.hardfaults_s β near zero while racing (bursts during loading are normal).Do this only after Step 5 looks clean β that way, if a new stutter appears, you know exactly what caused it.
iRacing rewrites these files on exit, so close the sim first. Files are in Documents\iRacing.
π₯½ Your renderer file depends on your headset runtime: rendererDX11OpenXR.ini for most modern headsets, rendererDX11Oculus.ini for the Oculus/Meta runtime, rendererDX11OpenVR.ini for SteamVR. Not sure? Sort the folder by date modified after a VR session β the one iRacing just touched is yours.
| File | Set | Why |
|---|---|---|
rendererDX11.inirendererDX11OpenXR.ini (or your runtime's β see above) | LoadTexturesWhenDriving=0 | Preload textures instead of streaming off disk mid-lap |
rendererDX11.inirendererDX11OpenXR.ini (same file) | CacheSwap3HighResCars=0 | No mid-race texture swapping |
app.ini | spoolingEnabled=0 | Stops continuous replay-to-disk writes |
| Graphics options (in-sim) | CrowdDetail=0 | Fewer draw calls, near-zero visual impact |
| Setting | Value |
|---|---|
| Low Latency Mode | On β not Ultra (Ultra caused present-queue stalls) |
| Power Management | Prefer Maximum Performance |
| Vertical Sync | Off |
| Threaded Optimization | On |
| Shader Cache Size | Unlimited |
| Anisotropic Filtering | 16x |
Also disable the GeForce/NVIDIA App in-game overlay β DirectX hooks and DPC load for no benefit. Same goes for RTSS / MSI Afterburner: notorious stutter sources, close them unless you truly need them.
Match your symptom. Every tool below is in Start-Tuning-Menu.bat β Troubleshoot.
The focus/timer trap. Run Watch-TimerResolution: if the timer jumps from ~1 ms to ~15.6 ms when the sim loses focus, the timer fix isn't active β re-run it from the menu (Advanced) and reboot.
Scheduled-task cadence (Windows Update scans fire every ~5β7 min). Run FullTrace during a race, then Scan-Stutter-Events β it finds each stall in your trace and lists which task fired at that moment. The Each-Race routine silences the usual offenders.
Usually a driver's DPC latency. Run LatencyMon (free) while racing β it names the driver behind the spike. nvlddmkm.sys on CPU 0 means the GPU-interrupt fix reverted (an MSI-mode quirk) β re-run it from the menu and reboot. Also close RTSS/Afterburner while diagnosing.
Still stuck? Set-NIC-USB-IRQ-Affinity (menu β Advanced) steers network + USB interrupts off CPU 0 too β the same trick as the GPU fix, worth trying when something remains.
Your Windows performance counters are corrupt (surprisingly common). Menu β Advanced β Repair-PerfCounters, reboot, re-trace.
Menu β Advanced has an undo for every fix (GPU IRQ, NIC/USB, timer, guide extras). Power plan and Process Lasso changes are reverted in their own apps. Post-Race-Restore turns Update/Search/Defender back on. Reboot after undoing IRQ or timer changes.
Diagnostics (read-only): FullTrace (1 Hz CSV: per-CCD load, CPU0 vs frequency-core interrupt/DPC, GPU util/power/clocks/throttle, sim & VR CPU, pagefaults, power plan β timestamp gaps = stalls caught live), Preflight-Check, Scan-Stutter-Events, Watch-TimerResolution.
Fixes (each reversible): Enable-GlobalTimerResolution (GlobalTimerResolutionRequests=1 under HKLM\...\Session Manager\kernel), Set-GPU-IRQ-Affinity (DevicePolicy=4 + AssignmentSetOverride on the NVIDIA device), Set-NIC-USB-IRQ-Affinity (same, PCI NICs + USB hosts, spread over cores 17β19), Add-Defender-Exclusions, Apply-Guide-Extras (USB suspend, Game Bar/DVR), Pre-Race-Quiet / Post-Race-Restore (Update/Search tasks + services, optional Defender realtime β needs Tamper Protection off), Repair-PerfCounters (lodctr /R both arches + WMIADAP), Enable-DiagnosticLogs.
HAGS (Hardware-Accelerated GPU Scheduling) is deliberately not scripted β it's a genuine toss-up on newer cards. Test both ways.
Full inventory with admin flags: scripts\README.txt Β· browse the source.
Adapted from rcsracing93's excellent single-CCD guide. Most of it transfers; two things flip on dual-CCD:
This guide supports single-CCD chips too β pick 7800X3D / 9800X3D at the top and it hides the pinning steps, keeps you on Balanced, and still applies the timer, GPU-interrupt, Defender and background fixes.