Драйвер NDIS.SYS очень высокая задержка в Windows 10
Я обновил свой компьютер с Windows 8.1 до Windows 10. Установка прошла успешно, никаких проблем не произошло.
Моя материнская плата - Gigabyte GA-B75M-D3H. После установки я обновил драйверы Realtek до последней версии Windows 10.
После того, как я начал использовать новую Windows 10, у меня возникли внезапные зависания, воспроизведение аудио или видео было остановлено на очень короткое время.
Я проверил задержки драйвера с помощью LatencyMonitor и DPC Latency Checker.
Они оба показали очень высокие значения (100-200 000, даже 600 0000 микросекунд), и кажется, что проблема связана с NDIS.SYS.
Поскольку этот файл связан с сетью, я протестировал его с другой сетевой картой (сетевой картой ASUS PCI LAN), у него совершенно другой драйвер.
Удивительно, но эта сетевая карта также показывает очень высокие значения (не так часто, как Realtek).
Realtek:
ASUS:
Что мне теперь делать?
ОБНОВИТЬ
Я снова установил Windows 10.
Я использую торрент-клиент (uTorrent), который настроен на автозапуск. Если я выйду из клиента, я получу нормальные значения.
Какой параметр я должен проверить в моем торрент-клиенте, чтобы избежать проблемы?
3 ответа
Я сбросил статистику о ЦОД ("C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\xperf.exe" -I highCPUUsage.etl -a dpcisr > dpc.txt
) и это показывает 2 DPC, которые являются критическими (более 1024 мкс):
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%
Я проверил стеки вызовов NDIS.sys и увидел, что участвуют файлы сторонних производителей. ipgdnd60.sys
это сетевой драйвер ASUS Gigabit и vfilter.sys
(Драйвер VPN). Обнови оба и посмотри что получится.
Я обнаружил проблему с программным обеспечением LatencyMon.
Очередь RSS сетевой карты распределена по ядрам ЦП, но у ядра №0 много прерываний.
Всплески задержки DPC наконец-то исчезли:
Попробуйте этот командлет PowerShell:
PS C:\WINDOWS\system32> Get-NetAdapterRss -Name "*"
Выведите что-то вроде этого:
Имя:
Интерфейс EthernetОписание: Контроллер семейства Realtek PCIe GBE
Включено: True
NumberOfReceiveQueues: 4
Профиль: NUMAstatic
BaseProcessor: [Группа:Номер]: 0:0
MaxProcessor: [Группа:Номер]: 0:6
MaxProcessors: 4
RssProcessorArray: [Группа:Номер] /NUMA Расстояние]: 0:0/0 0:2/0 0:4/0 0:6/0
IndirectionTable: [Group:Number]
Затем установите для профиля сетевого адаптера значение «Ближайший»:
PS C:\WINDOWS\system32> Set-NetAdapterRss -Name «Ethernet» -Profile Closest
Список еще раз:
PS C:\WINDOWS\system32> Get-NetAdapterRss -Name "*"
Имя:
Интерфейс EthernetОписание: Контроллер семейства Realtek PCIe GBE
Включено: True
NumberOfReceiveQueues: 4
Профиль: Ближайший
базовый процессор: [Группа:Номер]: 0:0
MaxProcessor: [Группа:Номер]: 0:6
MaxProcessors: 4
RssProcessorArray: [Группа:Номер] /NUMA Расстояние]: 0:0/0 0:2/0 0:4/0 0:6/0
IndirectionTable: [Group:Number]
Некоторые ресурсы по этой теме:
Возможно, стоит попробовать назначить каждую очередь RSS другим ядрам, отличным от 0, с помощью NUMAstatic, но я не пробовал, потому что моя проблема решена.
У меня также были некоторые проблемы с ndis.sys . Я перепробовал множество решений, и пока ни одно из них мне не помогло, но недавно мне удалось решить проблему с помощью следующих конфигураций:
- Включить модерацию прерываний NIC
- Установите скорость модерации прерываний NIC на Extreme.
- Включите объединение сегментов приема (запустите powershell от имени администратора и выполните следующую команду:
Set-NetOffloadGlobalSetting -ReceiveSegmentCoalescing Enabled