Discussion: NVIDIA Display Driver (nvlddmkm.sys) DPC Latency

Status
Not open for further replies.
And people wonder why gamers stick with certain versions.
I update a w10 image everytime i do a round of testing - usually between 3 and 6 months, if its stable its a keeper(capture and deployed), currently 17763.3165. isnt only gamers who stick with certain builds.
 
My results

Thanks for sharing! I don't see any nvlddmkm.sys in your list, do you even have a Nvidia card + drivers? Here are my results on a somewhat fresh Win 11 21H2 installation (with current Nvidia driver).
 

Attachments

  • latmonAurox87.txt
    23.4 KB
Thanks for sharing! I don't see any nvlddmkm.sys in your list, do you even have a Nvidia card + drivers? Here are my results on a somewhat fresh Win 11 21H2 installation (with current Nvidia driver).
I have a Nvidia 1070 card. Driver is not current...maybe 6 months old
 
nvidia is back to spiking over 500.
back in the good old days before i went down this rabbit hole, when i was just bareboning services, then scheduled tasks then new tweaks that came along, space hoggers and loggers, i was finding that w7, 8.1 and w10 1809, all thrashed to a similar degree were fast and stable enough for my needs. i have spent time and effort on this problem and i am back to square one, zip zilch squat kadingus nada and FoL.
I hereby officially retire from this problem quoting the time old Roger Murtaugh defense, "im too old for this ---t".
 
nvidia is back to spiking over 500.
back in the good old days before i went down this rabbit hole, when i was just bareboning services, then scheduled tasks then new tweaks that came along, space hoggers and loggers, i was finding that w7, 8.1 and w10 1809, all thrashed to a similar degree were fast and stable enough for my needs. i have spent time and effort on this problem and i am back to square one, zip zilch squat kadingus nada and FoL.
I hereby officially retire from this problem quoting the time old Roger Murtaugh defense, "im too old for this ---t".
It's like a person buying there first cold air intake in there vehicle then after that you need more haha. Bye Clanger we will continue our rabbit hole in your honor
 
its damn well addictive. i dont mind spending (a lot)of time and effort on something when i get the result i want, ive achieved something but when all you do is piddle in the wind and get wet you have to say enough is enough.

ive changed a few bios settings on the pc,(disabled lan and onboard audio) its airgapped for good and im writing this from ubuntu studio on my laptop.
 
Last edited:
I have updated my drivers from 441.41 to 527 and get nvlddmkm issues back. I successfully fixed the issue within 15 minutes.
Steps to do after clean driver installation with all bloatware and telemetry deleted :
1. Open msinfo32.exe and check what your gpu has no conflicts and not sharing IRQ's.
2. Seach your GPU IRQ number,remember it and create dword 32 with value 1 on
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl For example : IRQ4294976776
3. Apply my couldbefixv2 reg file (WARNING IT COULD BREAK YOUR WINDOWS!!!) this reg is less aggressive than my previous one which get deleted here,so everything should be ok,tested on 3 pc's with rtx 2060,3070 and 3070TI gpus.
4. Apply my nvidia inspector profile. (WARNING if you using two CPU's or two CCD cpu you need to manualy enable threaded optimisation)
5. Set MSI - High using MSIv3 tool. (RUN from Admin)
6. Set your GPU Interrupt on non-busy physical core using Microsoft Interrupt Affinity tool,by non-busy i mean your core should have 0.0 interrupt cycle time. If you dont have physical core with 0.0 cycle time you should get one by spreading ! ALL ! your devices between all phisical cores instead one chosen for GPU.
7. Disable HDCP using attached .bat
8. Disable last telemetry using attached .bat

If you still having nvlddmkm spikes then you have driver conflicts with GPU involved.
 

Attachments

  • 1.7z
    2.9 KB
I have updated my drivers from 441.41 to 527 and get nvlddmkm issues back. I successfully fixed the issue within 15 minutes.
Steps to do after clean driver installation with all bloatware and telemetry deleted :
1. Open msinfo32.exe and check what your gpu has no conflicts and not sharing IRQ's.
2. Seach your GPU IRQ number,remember it and create dword 32 with value 1 on
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl For example : IRQ4294976776
3. Apply my couldbefixv2 reg file (WARNING IT COULD BREAK YOUR WINDOWS!!!) this reg is less aggressive than my previous one which get deleted here,so everything should be ok,tested on 3 pc's with rtx 2060,3070 and 3070TI gpus.
4. Apply my nvidia inspector profile. (WARNING if you using two CPU's or two CCD cpu you need to manualy enable threaded optimisation)
5. Set MSI - High using MSIv3 tool. (RUN from Admin)
6. Set your GPU Interrupt on non-busy physical core using Microsoft Interrupt Affinity tool,by non-busy i mean your core should have 0.0 interrupt cycle time. If you dont have physical core with 0.0 cycle time you should get one by spreading ! ALL ! your devices between all phisical cores instead one chosen for GPU.
7. Disable HDCP using attached .bat
8. Disable last telemetry using attached .bat

If you still having nvlddmkm spikes then you have driver conflicts with GPU involved.
Thank you and everyone else on this thread for your efforts! I was passively following your conversation for a few days already as I was facing the same issue. Just created this account to contribute my experience to this wondeful thread!

Long story short: I'm running on a Gigabyte X570 Extreme motherboard with 64 GB g.skill f4-3600c16-16gtzn in 4 sticks with a AMD Ryzen 9 3950X and a RTX 2070S and I was facing DPC routine execution time spikes with nvlddmkm.sys, storport.sys and stornvme.sys.

The solution to my problem was to set CSM Support to enabled in the BIOS. The menu where you can find it is called "Boot". CSM btw means Compatibility Support Module and having it enabled basically means that the UEFI is enabling the legacy PC boot process (traditional BIOS that is). Honestly, I have no idea how all of this is even remotely related, but there's another problem with having this setting disabled, btw: there's a heavy amount of input lag for both mouse and keyboard int the BIOS settings menus.

It took me days to pinpoint which setting was responsible for this. The only thing I noticed was that the spikes were gone after a BIOS update. I suspected that this upate might have fixed my problem, however this was not the case: As soon as I configured everything like I use to do the spikes returned and I was puzzled what might cause this again. As I usually set a ton of settings on the BIOS myself it took me a lot of reconfigure, reboot, test - cycles to identify the setting which is soley responsible for this.

I'm leaving this here in hope that I can save someone time and nerves with this problem. Honestly, I wasn't even aware about latency, DPC routine execution times and all those things, until I stumbled over Latencymon. Now that I've sorted it out I must say that I never ever had the feeling of games running so smooth. I guess that I always had these sort of problems and I just wasn't aware about what really was going on all the time ... and I'm building my own boxes since more than 20 years. Thank you everbody for sharing!
 
Last edited:
I have updated my drivers from 441.41 to 527 and get nvlddmkm issues back. I successfully fixed the issue within 15 minutes...
I tested everything in this post today, with one exception, and here is my takeaway:

CPU SPEED
I've noticed in LatencyMon that your (ZEFIR001) CPU speed isn't reported accurately, it says 370 Mhz. I Googled this and see that it may be a bug which AMD/Microsoft need to address, or perhaps it's because of some other tweak, but what concerns me is that Windows may be adjusting things behind the scenes to account for a "low processor speed". This is a hypothesis, but something that could be a variable to consider.

TESTING RESULTS
I've spent many hours on some of these tweaks already since they are repeats, and I didn't see results then, nor did other users. For example, disabling HDCP is definitely not part of the solution for this thread as many people tried it without success, so that one needs to be off the table entirely, along with things like DDU and telemetry. There are unknowns to consider for telemetry too--it isn't installed on my machine while using the real Nvidia installer, so it could be that only newer cards and/or the GeForce Experience are what install the telemetry. I never install the GeForce Experience so that could explain why I don't have it. Either way, we know that telemetry isn't the culprit for the spikes.

Also, I tried the new registry file for the Nvidia service and while it didn't brick my machine this time, it didn't do anything to help spiking. There's also no guarantee that any of these keys are "doing" anything, since they are undocumented. ErrorControl is already set to 0 by default in the registry, so that key for sure isn't helping.

I already played around with the Nvidia profile inspector last week and there's very little documentation in the tool (the creators don't even know what half the stuff is that they wrote this program for which is a red flag to me), so this is all just guess and check territory. Anyway, I imported the ZEFIR001 profile and applied it, rebooted, and it didn't fix the spikes. Most settings in this profile simply will not be the solution (Antialiasing, Anistropic Filters, etcetera), and many of the features don't apply to older cards, such as DLSS, GSync, and so forth.

UNVERIFIED TWEAK
The only thing I haven't given a fair trial, is the interrupt affinity stuff, because I think it probably is a solution, but I don't want it to be. Savitarax thoroughly documented his steps and he didn't do anything else (no DDU, no NvCleanStall, no reg tweaks, etcetera) and it solved the problem. ZEFIR001 also mentioned doing these affinity steps, and that's probably what the fix for him in his recent post truly is, and all the other tweaks are just being lumped in with the real solution.

The reason I'm in no rush to play with the interrupt stuff is because that's not a usable solution for the masses (that I'm aware of). By masses, I mean you have to consider that most gamers don't know what any of this is, hell most people don't even know what DPC is nor check for it, and the chances of not only making a mistake and borking their Windows is high, but it's also not a solution that can be integrated into an image. Maybe someone more experienced than me could turn that solution into something casual computer users can implement easily, but even then I still firmly believe that Nvidia/Microsoft need to be responsible for fixing it, since CPU affinity could be handled better in the driver or the OS instead.

What I do know so far about affinity, is that it seems like all drivers operate on all CPU cores, since I keep seeing various drivers appear on all my cores in the CPU tab in LatencyMon. I would look for better tools in the future for investigating this further though. Something else that I'm aware of is that in the power plans there are keys that tell the OS which cores to put things on by default, and so you could experiment with that too, but it is mostly undocumented and will require a lot of trial and error.

If we do want to work on a final solution using the CPU affinity stuff then it should be done methodically, where we figure out precisely what needs to be moved around, so that we are manipulating as few things as possible to achieve results, rather than messing with every single driver.

I want to reiterate on a sentiment that came up in the past--I do genuinely appreciate posts like these that are offering potential solutions. I'm not here to tear people down and say their tweaks are no good, rather this is what the scientific method is all about (replicating solutions) and so I go and test all these things, as well as spending time researching them online before ruling them out, and if I can't replicate the results then I share that so we can all evaluate where to go next. Part of why I come across as critical is because the testing methodology a lot of people use is really only good for ballpark science. What I mean is, sure a solution might be somewhere in a list of 50+ tweaks and tools, but most of those aren't doing anything positive, it's really only a handful of them that are doing the heavy lifting, and I want to narrow it down to the true solution before peddling that to the public.
 
...The solution to my problem was to set CSM Support to enabled in the BIOS...
I was still spiking with CSM enabled.
Same situation for me that Clanger said. I use "Legacy Boot" and still have the Nvidia spiking issue. To be more specific I'm using non-uefi, non-secure boot, and no TPM module installed. As far as I know CSM is the same as Legacy Boot, but I wanted to make note of it in case I was mistaken.

I can't explain why it fixed the problem for you, apart from there's probably more information we need to assess. I've seen just as many anecdotes from people saying that removing their ram and re-seating it fixed the Nvidia spikes, and that doesn't make sense either. So I don't know what's really happening, except that there's probably just bugs in the BIOS and these various tasks act as a workaround to trigger something. I'll give an example of what I mean:

On internet routers and in motherboard bios, after many years of messing with these firmwares, I've settled into a routine where I will first reset a bios to defaults, then update the bios firmware, then reset the bios to defaults again before manually tweaking it. This procedure has fixed countless problems for me over the years, especially in old Linksys routers.

Are you confident that something else didn't fix it, such as disabling virtualition in the bios and/or Windows? When you reset your bios back to defaults is it turning off virtualization, and then are you re-enabling it manually?
 
Same situation for me that Clanger said. I use "Legacy Boot" and still have the Nvidia spiking issue. To be more specific I'm using non-uefi, non-secure boot, and no TPM module installed. As far as I know CSM is the same as Legacy Boot, but I wanted to make note of it in case I was mistaken.

I can't explain why it fixed the problem for you, apart from there's probably more information we need to assess. I've seen just as many anecdotes from people saying that removing their ram and re-seating it fixed the Nvidia spikes, and that doesn't make sense either. So I don't know what's really happening, except that there's probably just bugs in the BIOS and these various tasks act as a workaround to trigger something. I'll give an example of what I mean:

On internet routers and in motherboard bios, after many years of messing with these firmwares, I've settled into a routine where I will first reset a bios to defaults, then update the bios firmware, then reset the bios to defaults again before manually tweaking it. This procedure has fixed countless problems for me over the years, especially in old Linksys routers.

Are you confident that something else didn't fix it, such as disabling virtualition in the bios and/or Windows? When you reset your bios back to defaults is it turning off virtualization, and then are you re-enabling it manually?
I also can't explain why it fixes my problem, but indeed it does! I've btw just checked whether virtualization was enabled per optimized default config, or not: It wasn't enabled.

I've now enabled it and still I see no more spiking issues. Guess this is good news. Let me know whether I should check some other options. I could possibly also take pictures of all of my current bios settings, if that would be helpful. In the end I just hope that together we can help as many people as possible to resolve this issue.
 
I tested everything in this post today, with one exception, and here is my takeaway:
Thanks for feedback - the reported 370mhz speed could be because of modified bios usage which allowes me to enable PBO up to +500mhz. Usually my cpu stays around 4000mhz while surfing in web.

Reg dwords which i attached do actually work on 441.41 driver,but i agree they could not work on newer drivers since nvidia constantly changing them over updates.
Registry keys accessed under the nvlddmkm (Nvidia Display) service/driver path
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm\Global\NVTweak : RmProfilingAdminOnly
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm\Global\NVTweak : NvCplAllowWinSatAssessment
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm\Global\NVTweak : NvCplAllowStartupDelay
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm\Global\NVTweak : isFirstSyncFirstSession
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm\Global\NVTweak : InstalledDisplayServers
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm\Global\NVTweak : HideXGpuTrayIcon
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm\Global\NVTweak : FirstRunAfterDriverInstallation
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm\Global\NVTweak : DisplayPowerSaving
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDMDriver
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2ReserveVASpaceSizeForNvFBC
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2ReserveVASpaceSize
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2PTUpdateGPUVirtual
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2PresentNotifyForFlipEx
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2KmdHighAddrReserve
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2InvalidatePDEsForReserveVA
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2IdleAddressSpaceForPTUpdate
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMV2HandleLockManagement
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2ForceInvalidateAllCpuCache
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2ForceEngineResetForHwError
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2EnableSLILinkMirroredWAR
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2EnableSLI
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2EnableGdiBroadcast
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2EnableFermiWDDMv2
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMV2DoNotUseRealVpr
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2DisableSlowCePagingWar
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2DisableRenderGDI
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2DisableBasicPrimeForGPUVA
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv2AllowHwResourcePerGPU
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv22EnableSmoothTransition
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv22EnableSetTimingsDdi
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv21VprProfile
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv21Force2MSizeAlignment
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv21EnableVPRSLI
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv21EnableVprPagingContext
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv21EnableMovePaging
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMV21EnableDualPteForCPUVisible
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv21Enable64KbSysmemSupport
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMv21Enable2MPageSupport
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMV2_128K_PTE
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMPagingVASupported
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDMCPUHostApertureSupported
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDM20UseContextAllocation
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WDDM1xUseContextAllocation
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : WakeUpAllAdapters
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : ValidateBlitSubRects
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : UvmDisable
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : UsePrivateNonStaticDSRShaderResources
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : UseOptimizedUpdatePTEWddm2
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : UseOptimizedUpdatePTEWddm1
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : UseOptimizedUpdatePTEvGPUwddm1
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : UseDpcForGpuWatchdogCallback
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : UMDPowerFeatureConfig
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : SimulateSecureBoot
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : SemaphoreLocation
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : RotateFlag
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : RmMemBacktraceStackDepth
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : RmBreak
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : RM1774520
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : RM1457588
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : ReportVblankImmediatelyOnDisplaylessHw
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : ReportPageFaultInterrupt
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PushBufferLocation
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PStateControlType
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : prtLevel
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : prtBreak
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PrimaryPushBufferSize
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PresentSyncVblankTimeoutMS
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PresentSyncAppTimeoutMS
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PresentSyncAdaptiveVblankTimeoutMode
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PreferSystemMemoryScratch
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PreferSystemMemoryPTEs
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PreferSystemMemoryContiguous
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PnpFlags
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PerfAnalyzeMidBufferPreemption
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PCIEPowerControl_8086191f50001458
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PCIEPowerControl
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : PageFaultDebugMode
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : OverrideBootPolicies
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : ObjectName
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : NVFBCEnable
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : NodeCudaTimeSlice
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : MoveToBufferBoundaryPreemption
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : ModsMode
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : MaxHybridSurfSize
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : MaxGfxpSupportNumber
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : LogWarningEntries
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : LogPagingEntries
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : LogEventEntries
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : LogErrorEntries
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : LogEnableMasks
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : LogDisableMasks
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : LimitOptimusToWDDM21
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : LimitOptimusToWDDM13
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : LimitOptimusToWDDM12
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : LargeSurfSizeBy2DFill
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : KMD_StackTraceControl
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : ImagePath
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : HyperSamplingSettings
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : HDAudioCoprocDynamicDelayRefresh
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : Group
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : GC6Threshold
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : ForceVAAlignment2M
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : ForceDLDVIOn4kTileDisplay
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : ForceCrossAdapterSurfacesToCachedMem
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EvoTimeoutBugcheck
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : ErrorControl
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableWARLBDATEXTRA
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableVGPUIndicator
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableValidationOfGPUMemoryAddressability
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableSparseTexture
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableSegmentPreservation
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableSCGMidBufferPreemption
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableRmEscape
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableRGSExtensions
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableRewind
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableReleaseDisplayOwnership
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableRegistry
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableRedundantAdapterCheckingForXGPU
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnablePerformanceMode
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnablePageFaultDebugOutput
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableNopPaddingMBP
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableNodeCuda
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableMosaicBlitSlicing
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableMidGfxpSharedBuffer
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableMidGfxPreemptionVGPU
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableMidGfxPreemption
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableMidBufferPreemptionForHighTdrTimeout
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableMidBufferPreemption
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableMemoryTiling
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableLoadImage
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableKMBufferResetEngineOnNonSLI
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableIoMmuOnSLI
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableIoMmu
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableIndependentFlip
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableHDAudioD3Cold
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableGFESharedMemory
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableGC6FSM
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableForceIgpuDgpuFromUI
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableDynamicEdidMode
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableDx12OnOptimus
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableDx12OnMsHybrid
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableDirectFlip
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableCrossAdapterResource
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableComputeReset
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableCEPreemption
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableCEPaging
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableBugcheckTinting
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableBugcheckDisplay
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableBlackListingSurpriseRemovalWAR
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EnableAsyncMidBufferPreemption
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : Enable1to1CompTagMapping
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : EmulatorDeviceMask
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : Emulator
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DriverModel
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DriverManagesResidency
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DriverDebugBreakMode
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisplayName
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DispCtrl
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisableWriteCombining
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisablePreemptionOnS3S4
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisablePreemption
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisableMshybridNvsrSwitch
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisableMSHybridCopyCQHas3D
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisableKmRenderStage
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisableKmRenderBoost
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisableKmRender
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisableDWMContexts
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisableCudaContextPreemption
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DisableBugcheckCallback
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DestroyAllocationAssumeNotInUse
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DependOnService
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DependOnGroup
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DeleteFlag
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : DelayedAutostart
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : CppKernelNotEnforced
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : CMemoryAllocatorOn
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : CMemoryAllocatorFreeCount
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : CMemoryAllocatorFlags
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : CMemoryAllocatorCallStackDepth
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : BuffersInFlight
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : BootFlags
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : bForceDualVideoBridgeMode
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : AllowRestrictedTeslaOnWDDM
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : AllowHWGC6
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : AllowEscapesInCompatMode
\Registry\Machine\SYSTEM\ControlSet001\Services\nvlddmkm : AllowdGPUPassthrough
The interrupt stuff is the most important thing. You wont solve nvlddmkm.sys and directx spikes without using it. Not only you should use Microsoft Interrupt Affinity Tool - you should test bounding your GPU to every non-busy core in your system,because even if it shows 0.0 cycle time - there is no guarantee something dont cycle on that core while you gaming or else.
 
To be more specific I'm using non-uefi, non-secure boot, and no TPM module installed.
Same here, disabled Turbo in bios. Gigabyte UD H310M S2V 2.0 (rev 1.0). Going to rebuild with a B365 chipset board and i wont be prattling around with this anymore.
 
Last edited:
Ok I think I've fixed my DPC latency issue. I've tried ZEFIR001 suggestions, they didn't help at all. Then I've went into the BIOS (again) and disabled Virtualization, Speedshift/-step, Turbo Boost, C-States, Hyper-Threading, Efficiency-Cores, enabled CSM (as suggested above) and testet again: no change, average latency just got a little higher because of the reduced clocks. :mad:

Undid all the above and played around with MSI_util_v3.exe and intPolicy_x64.exe (Microsoft Interrupt Affinity Tool). I did enable MSI mode and set the interrupt priority to "high" with the MSI tool... no change. Then I've played around with interrupt affinity masks with the other tool and saw some minor changes to "current measured interrupt to process latency" while trying different cores. Nothing too fancy and the spikes from nvlddmkm.sys were still there.

Ok enough of the preamble... removing the affinity mask totally fixed every spike from nvlddmkm.sys and brought the average latency (which was already good) down even further!

1671804847700.png

Check this out. This is on Windows 11 21H2 after the fix:

1671804532965.png

As a reminder, this is what it looked like on Windows 11 22H2:

1671804874184.png

I will test it later on my old 22H2 installation and see if I can fix the problem there too.

Would love to hear from others like Hellbovine if that fixes their problem too!
 
I've went into the BIOS (again) and disabled Virtualization, Speedshift/-step, Turbo Boost, C-States, Hyper-Threading, Efficiency-Cores, enabled CSM (as suggested above) and testet again: no change
Did all that too. i do those to stop all power saving and boosting, i run cpu at its base speed. affinity mask is worth a last try.
amd r series card is still an option.
 
Last edited:


I've now tried it on my other 22H2 installation and got the same message as you. Interesting... I've then went ahead and played around with the various settings under "Advanced...":

1671809920180.png


IrqPolicyAllCloseProcessors and IrqPolicyOneCloseProcessor seem to work best for my 22H2 installation and fix the latency spikes from nvlddmkm.sys completely! Overall the latency is still a bit worse than 21H2, but my issue is resolved. Please try those policies and see if that helps with your latency problems.

1671810075701.png
 
Status
Not open for further replies.
Back
Top