4

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:

Realtek latency

ASUS:

ASUS latency

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.

enter image description here

What parameter should I check in my torrent client to avoid the problem?

Nestor
  • 787

3 Answers3

2

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.

1

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:

https://docs.microsoft.com/en-us/powershell/module/netadapter/get-netadapterrss?view=windowsserver2022-ps

https://docs.microsoft.com/en-us/powershell/module/netadapter/set-netadapterrss?view=windowsserver2022-ps

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.

0

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: