01Understanding the Stutter TypesDIAGNOSIS
iRacing stutters on this platform fall into two distinct types. Identifying which type you have determines the correct fix. Use CapFrameX (free) to capture frame time data and analyze the spike anatomy.
Type A
GPU Scene Complexity Spike
Frame −1 GPU active28–35ms
Spike frame FT25–32ms
Spike frame CPU~3ms (fine)
Spike frame GPU~4ms (fine)
Ripple frames4–5 frames elevated
TriggerComplex corners, grandstands
Type B
CPU Sim Thread Preemption
Frame −1 GPU active~4ms (normal)
Spike frame FT15–27ms
Spike frame CPU15–27ms
Spike frame GPU~3ms (fine)
Ripple frames1 frame, clean recovery
TriggerAny corner, no pattern
ℹKey insight: iRacing's sim thread is hardcoded to CPU 0. Any kernel interrupt (DPC) that also runs on CPU 0 will preempt the sim thread and cause a Type B stutter. NVIDIA GPU drivers generate high-frequency DPCs — by default on CPU 0.
⚠Tools needed: CapFrameX for frame time capture, LatencyMon (free, resplendence.com) for kernel interrupt diagnosis. Run both simultaneously during a session to correlate stutters with DPC events.
02iRacing Graphics SettingsFIX TYPE A
These settings reduce GPU draw call load at complex corners, eliminating Type A spikes. Configure via iRSidekick Profiles or iRacing's own Options menu.
Monitor / Display Tab
| Setting | Value | Notes |
| Refresh Rate | Match monitor max Hz | Set to your monitor's maximum (144, 165, 240Hz). Running below max causes present timing mismatches with the frame cap. |
| NVidia Reflex | Off | Reflex On+Boost manipulates the present queue and can cause stall patterns. Test Off first. |
| NVidia SMP | Enabled | Keep enabled for multi-monitor setups. |
Graphics Tab
| Setting | Value | Notes |
| Frame Rate Limit | Match Hz − 1 | e.g. 164fps for 165Hz, 239fps for 240Hz. Leave ~30% GPU headroom. |
| MSAA Samples | 2x | Dropping from 4x to 2x significantly reduces GPU load at corners with complex geometry. |
| Crowds | Off | Grandstand crowd geometry is a major draw call source at busy corners. |
| Shadow Maps & Cloud Shadows | Off | Biggest single GPU spike contributor at complex scenes. |
| Dynamic Objects | Off | |
| Static Shadow Count | 2 | Default 3. Reduce to 2 if GPU spikes persist. |
| Max Prerendered Frames | 1 | Reduces render queue depth, improves input latency. |
Extras Tab
| Setting | Value | Notes |
| Video mem swap high-res cars | Unchecked | Allows dynamic car texture streaming which causes GPU bursts when cars enter view. Uncheck to preload everything. |
| Load paint textures while driving | Checked | Keep enabled. |
03app.ini TweaksFIX TYPE A
Location: Documents\iRacing\app.ini — back up before editing. iRSidekick does not manage these keys so they survive profile switches.
Add or edit under the [Graphics] section:
carPreloadAll=1
trackTexturePreload=1
streamingTextureSize=256
Under the [Audio] section:
numSoundStreams=12
ℹSession load time will increase slightly with preloading enabled. This is expected — assets load once at session start rather than mid-lap.
04NVIDIA Driver & Control PanelFIX TYPE B
Download latest driver from nvidia.com/drivers. Always use the most current Game Ready Driver.
Run Custom Install. Uncheck: PhysX System Software, GeForce Experience, NVIDIA App, HD Audio. Only check: Display Driver. GFE adds DirectX hooks and unnecessary DPC interrupts.
If GeForce Experience is already installed, uninstall it via Windows Settings → Apps.
NVIDIA Control Panel — iRacing Program Settings
Manage 3D Settings → Program Settings → Add iRacingSim64DX11.exe
| Setting | Value | Notes |
| Power Management Mode | Prefer Maximum Performance | Prevents GPU clock stepping during session. |
| Low Latency Mode | Ultra | Reduces render queue depth. |
| Threaded Optimization | On | Distributes NVIDIA driver work across cores rather than concentrating on CPU 0. |
| Texture Filtering Quality | High Performance | |
| Vertical Sync | Off | iRacing handles its own frame pacing. |
| Shader Cache Size | Unlimited | Prevents shader recompilation mid-session. |
05NVIDIA Interrupt Affinity — Registry FixFIX TYPE B — CRITICAL
This is the most impactful fix for Type B CPU stalls. By default, NVIDIA's kernel driver nvlddmkm.sys services all GPU interrupts on CPU 0. Since iRacing's sim thread is also hardcoded to CPU 0, these DPC interrupts directly preempt the sim thread causing stutters. Moving NVIDIA interrupts to CPU 2 eliminates the competition entirely.
⚠Registry edit. Run as Administrator. Requires reboot to take effect.
Step 1 — Find your GPU Device ID
wmic path Win32_PnPEntity where "Name like '%NVIDIA%'" get DeviceID,Name
Note the full DeviceID for your GPU — it looks like:
PCI\VEN_10DE&DEV_XXXX&SUBSYS_XXXXXXXX&REV_XX\X&XXXXXXXX&X&XXXX
Step 2 — Apply Interrupt Affinity
Replace YOUR_DEVICE_ID with the full DeviceID from Step 1:
reg add "HKLM\System\CurrentControlSet\Enum\PCI\YOUR_DEVICE_ID\Device Parameters\Interrupt Management\Affinity Policy" /v DevicePolicy /t REG_DWORD /d 4 /f
reg add "HKLM\System\CurrentControlSet\Enum\PCI\YOUR_DEVICE_ID\Device Parameters\Interrupt Management\Affinity Policy" /v AssignmentSetOverride /t REG_BINARY /d 04 /f
The value 04 is a bitmask — binary 00000100 = CPU 2. Reboot after applying.
✓Expected result: CPU 0 DPC load drops ~75%. CPU 2 handles NVIDIA DPCs. Type B stutter magnitude reduces from 17–27ms to under 13ms or eliminated entirely.
To Revert
reg delete "HKLM\System\CurrentControlSet\Enum\PCI\YOUR_DEVICE_ID\Device Parameters\Interrupt Management\Affinity Policy" /f
06AMD Ryzen Balanced Power PlanX3D SPECIFIC
The 7800X3D and 9800X3D require the AMD Ryzen Balanced power plan so firmware can dynamically prioritize V-Cache cores. Bitsum Highest Performance and Windows High Performance both disable this behavior.
⚠Despite AMD chipset drivers being installed, this plan is often missing. Check with powercfg /list — if absent, create it manually.
Duplicate the Balanced plan — note the new GUID:
powercfg /duplicatescheme 381b4222-f694-41f0-9685-ff5bb260df2e
Name and configure it — replace <GUID> with your output:
powercfg /changename <GUID> "AMD Ryzen Balanced"
powercfg /setacvalueindex <GUID> 54533251-82be-4824-96c1-47b60b740d00 893dee8e-2bef-41e0-89c6-b55d0929964c 5
powercfg /setacvalueindex <GUID> 54533251-82be-4824-96c1-47b60b740d00 bc5038f7-23e0-4960-96da-33abaf5935ec 100
powercfg /setacvalueindex <GUID> 54533251-82be-4824-96c1-47b60b740d00 7f2f5cfa-f10c-4823-b5e1-e93ae85f46b5 1
powercfg /setactive <GUID>
07Process Lasso ConfigurationFIX TYPE B
⚠Important: iRacing uses EasyAntiCheat which blocks external CPU affinity changes. Do not set CPU affinity for iRacingSim64DX11.exe — it will fail. The NVIDIA interrupt affinity registry fix (Section 05) is the correct approach.
iRacingSim64DX11.exe — Right-click → Always
| Setting | Value | Notes |
| CPU Priority | High | Not Realtime. |
| I/O Priority | High | |
| Exclude from ProBalance | Yes | Critical — ProBalance must not throttle the sim process mid-session. |
Support Processes & Overlays
| Process | Setting | Value |
| iRacingLocalServer64 / Service64 | CPU & I/O Priority | High |
| CapFrameX, iOverlay | Exclude from ProBalance | Yes |
| Discord.exe | CPU Priority / Affinity | Below Normal / Odd cores only |
Options → Power → Active Power Profile → AMD Ryzen Balanced
08LatencyMon DiagnosisDIAGNOSIS
LatencyMon (free at resplendence.com) identifies which kernel drivers cause DPC stalls. Run during a session to verify fixes.
Launch iRacing and get on track through problem corners.
Alt-Tab, run LatencyMon as Administrator. Click Play. Run at least 5 minutes.
Check Drivers tab sorted by highest DPC execution time.
Check Per CPU data. If CPU 0 handles over 90% of ISR/DPC work, apply Section 05.
| Finding | Meaning | Action |
| nvlddmkm.sys highest DPC | NVIDIA driver DPC too long | Apply Section 05. Update driver. |
| CPU 0 handling all ISRs | Interrupt affinity not set | Apply Section 05 registry fix. |
| tiworker.exe pagefaults | Windows Update running | Stop wuauserv before sessions. |
| msmpeng.exe pagefaults | Defender scanning iRacing | Add Defender exclusions. |
✓Healthy baseline: NVIDIA worst DPC under 900µs. DPC count over 1000µs = 0. Hard pagefaults under 500 total. CPU 2 handling elevated DPC load is expected and correct after applying the registry fix.
09Pre-Launch Service StopsFIX TYPE B
Stopping background Windows services before sessions reduced hard pagefaults by 97% in testing. Run as Administrator before each session.
sc stop wuauserv & sc stop UsoSvc & sc stop WSearch & sc stop SysMain
sc stop Spooler & sc stop WlanSvc & sc stop XblAuthManager
sc stop BthAvctpSvc & sc stop BTAGService & sc stop bthserv
powercfg /setactive YOUR-AMD-RYZEN-BALANCED-GUID
sc start wuauserv & sc start UsoSvc & sc start WSearch & sc start SysMain
sc start Spooler & sc start WlanSvc & sc start XblAuthManager
sc start bthserv & sc start BthAvctpSvc & sc start BTAGService
Windows Defender Exclusions
Add-MpPreference -ExclusionPath "C:\Program Files (x86)\iRacing"
Add-MpPreference -ExclusionPath "$env:USERPROFILE\Documents\iRacing"
10Results — Before & AfterDATA
All captures at 164fps cap, triple 2560×1440, AMD Ryzen 7 7800X3D, RTX 4090. Spike threshold: over 12.2ms (2× the 6.1ms target frame time).
| Configuration | Avg | StDev | P99 | P99.9 | Worst | Spikes |
| Baseline — No fixes applied |
| GPU burst stutter (Type A) | 6.10 | 0.33 | 6.92 | 7.41 | 27.62ms | 1/120s |
| Complex track, no fixes | 6.10 | 0.43 | 7.07 | 7.65 | 32.10ms | 2/68s |
| After graphics settings tuning (Type A fixes) |
| MSAA 2x, crowds off, mem swap off | 6.10 | 0.35 | 7.07 | 7.63 | 8.43ms | 0/120s |
| After driver update + correct Hz + Reflex off |
| New driver, correct refresh rate, Reflex off | 6.08 | 0.32 | 6.93 | 7.36 | 17.14ms | 1/300s |
| After NVIDIA interrupt affinity + Process Lasso + services stopped |
| Full fix applied — session 1 | 6.08 | 0.33 | 6.98 | 7.49ms | 8.80ms | 0/300s |
| Full fix applied — session 2 | 6.08 | 0.35 | 7.02 | 7.62 | 10.84ms | 0/300s |
| Full fix applied — session 3 | 6.08 | 0.40 | 7.15 | 7.76 | 8.95ms | 0/300s |
| Full fix applied — session 4 | 6.08 | 0.54 | 7.65 | 8.47 | 10.61ms | 0/300s |
11Fresh Build ChecklistREFERENCE
Windows & Drivers
- Run all Windows Updates before installing anything else
- Install AMD chipset drivers — verify AMD Ryzen Balanced appears in powercfg /list
- Install NVIDIA display driver only (custom install, uncheck GFE, PhysX, NVIDIA App)
- Disable WiFi adapter in Device Manager if on wired ethernet
- Add Windows Defender exclusions for iRacing install and Documents\iRacing
Power & Performance
- Create AMD Ryzen Balanced power plan (Section 06) — note the GUID
- Install Process Lasso — start with Windows — set AMD Ryzen Balanced as power profile
- Configure Process Lasso per Section 07 — exclude iRacing sim from ProBalance
NVIDIA Interrupt Affinity
- Find GPU Device ID via wmic command (Section 05)
- Apply interrupt affinity registry fix (Section 05)
- Reboot and verify with LatencyMon — CPU 2 should show elevated DPC activity
iRacing Configuration
- Apply graphics settings from Section 02
- Edit app.ini — add texture preload and sound stream keys (Section 03)
- Frame cap = monitor Hz − 1. Confirm C-States disabled in BIOS. EXPO/XMP enabled for RAM.
Pre-Session Routine
- Run pre-launch script as Administrator (stops background services)
- Confirm Process Lasso running in system tray
- Wait at least one full lap before starting CapFrameX captures