NDIS.SYS driver very high latency in Windows 10
I have upgraded my computer from Windows 8.1 to Windows 10. The installation went well, no problem occurred.
My motherboard is a Gigabyte GA-B75M-D3H. After the install, I updated the Realtek drivers to their latest Windows 10 version.
After I started to use the new Windows 10, I experienced sudden freezes, the audio or video playback is stopped for a very short time.
I checked the driver latencies with LatencyMonitor and DPC Latency Checker.
They both showed very high values (100-200 000, even 600 0000 microseconds), and it seems that NDIS.SYS causes the problem.
As this file is network related, I tested it with another LAN card (an ASUS PCI LAN card), it has a very different driver.
Surprisingly, this LAN card also shows very high values (not as often as the Realtek).
Realtek:
ASUS:
What should I do now?
UPDATE
I installed Windows 10 again.
I use a torrent client (uTorrent) that is set to autostart. If I quit the client, I get normal values.
What parameter should I check in my torrent client to avoid the problem?
23 Answers
I dumped a statistic about DPCs ("C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\xperf.exe" -I highCPUUsage.etl -a dpcisr > dpc.txt) and this shows 2 DPCs which are critical (over 1024µs):
Total = 19697 for module ndis.sys
Elapsed Time, > 512 usecs AND <= 1024 usecs, 1, or 0.01%
Total, 19697
Total = 7174 for module tcpip.sys
Elapsed Time, > 512 usecs AND <= 1024 usecs, 1, or 0.01%I checked the NDIS.sys call stacks and saw that 2 rd party files are involved. ipgdnd60.sys is the ASUS Gigabit network driver and vfilter.sys (VPN driver). Update both and look what happens.
I also had some issues with the ndis.sys. I've tried a lot of solutions and so far none of then really helped me, but recently i managed to fix the problem with the following configurations:
- Enable NIC interrupt moderation
- Set NIC interrupt moderation rate to Extreme
- Enable Receive Segment Coalescing (Run powershell as administrator the following command
Set-NetOffloadGlobalSetting -ReceiveSegmentCoalescing Enabled
I have identified the problem with LatencyMon software.
The NIC's RSS queue is distributed across CPU cores, but the core #0 has a lot of interrupts.
The DPC Latency spikes are gone finaly at me:
Try this PowerShell cmdlet:
PS C:\WINDOWS\system32> Get-NetAdapterRss -Name "*"
Output something like this:
Name : Ethernet
InterfaceDescription : Realtek PCIe GBE Family Controller
Enabled : True
NumberOfReceiveQueues : 4
Profile : NUMAstatic
BaseProcessor: [Group:Number] : 0:0
MaxProcessor: [Group:Number] : 0:6
MaxProcessors : 4
RssProcessorArray: [Group:Number/NUMA Distance] : 0:0/0 0:2/0 0:4/0 0:6/0
IndirectionTable: [Group:Number]
Then set the NIC's profile to "Closest":
PS C:\WINDOWS\system32> Set-NetAdapterRss -Name "Ethernet" -Profile Closest
List again:
PS C:\WINDOWS\system32> Get-NetAdapterRss -Name "*"
Name : Ethernet
InterfaceDescription : Realtek PCIe GBE Family Controller
Enabled : True
NumberOfReceiveQueues : 4
Profile : Closest
BaseProcessor: [Group:Number] : 0:0
MaxProcessor: [Group:Number] : 0:6
MaxProcessors : 4
RssProcessorArray: [Group:Number/NUMA Distance] : 0:0/0 0:2/0 0:4/0 0:6/0
IndirectionTable: [Group:Number]
Some resource for this topic:
Maybe worth trying to assign each RSS queue to other cores than 0 with NUMAstatic but I did not try it because my problem is resolved.
1