Как я добираюсь до первопричины высоких Отложенных вызовов процедуры?

У меня есть Двухъядерный процессор, и один из этих двух постоянно в 100%. Взгляд в ProcessExplorer показывает мне, что это - Отложенные вызовы процедуры. Чтение по всей сети, кажется, дает мне тонны различных ответов.

Действительно ли возможно изложить несколько шагов к попытке сузить то, чем проблема могла бы быть в моем случае?

Обновление 1: FWIW, проблема сохраняется даже в Безопасном режиме.

Обновление 2: Я отключил все, что я мог от задней части ПК, и это купило меня на 40% более свободный процессор. Я также загрузил инструмент RATTV3, но по некоторым причинам на моей машине он не дает мне поломку драйвера драйвером. Существует хорошее описание и DPCLatencyChecker и RATTV3 здесь.

Обновление 3: LatencyMon (см. мой ответ ниже) говорит мне, что это nvstor32.sys - который является драйвером SATA Nvidia - с временами приблизительно 5 300 мкс.

Обновление 4: график утолщает при обдумывании, попытаться ли загрузиться аварийного диска (чтобы видеть, являются ли это действительно драйверы и не аппаратная проблема), я заметил, что DVD/проигрыватель компакт-дисков не работал (т.е. Даже не открывал дверь, когда я нажимаю кнопку). Учитывая, что машина просто возвратилась из замены материнской платы, я фигурировал, возможно, что они забыли включать ее. Я открыл поле, все казалось хорошо, но я отключил и включился, оно въезжает задним ходом снова. На перезагрузке все было прекрасно - больше никакого DPC (самое высокое теперь 300µs)!

Обновление 5: В следующий день, проблема назад, проигрыватель компакт-дисков, не работающий снова, даже, курсор в текстовом поле пароля мигает в замедленном воспроизведении... Испытанное отключение всего, о чем я мог думать, и на второй перезагрузке, работало снова (в Update2). В следующий раз я собираюсь попытаться отключить проигрыватель компакт-дисков полностью...

Обновление 6: Просто замеченный журнал Системного события имеет nvstor32.sys предоставление ошибки при высказывании Parity error detected in \Device\RaidPort0, затем предупреждение об отправке переинициализации. Теперь просто должны удаться который RaidPort0 ... (примечание, у меня нет установки RAID, это - просто стандарт трясины Acer). О, и мой Стой установка, по-видимому, была уничтожена, когда я сделал Системный Откат (или независимо от того, что это называют), потому что это не запустится (ошибка RPC), не удалит (setiface, ошибка произошла).

Обновление 7: Наконец получил время к перезагрузке с отключенным DVD. Больше никаких проблем DPC! (много отсутствий страницы, хотя, но это на потом). Следующий шаг: удайтесь, является ли это кабель или DVD-плеер.

Обновление 8: Одолженный кабель SATA, загруженный с ним, никакие проблемы. Работы CD/DVD плеера, никакие проблемы DPC с nvstor32.sys, никакие процессоры не заблокированы. Счастливый конец... почти: я все еще получил проблемы со Стой, очевидные проблемы DPC с storport.sys при запуске (возможно, нормальный для USB?), и много трудных отсутствий страницы. Но это будет предмет других вопросов.

Постскриптум: Я недавно начал иметь ту же проблему и использовать тот же метод, управляемый для разыскивания его к карте с интерфейсом USB (тот, который я использовал для ReadyBoost), быть застреленным.

41
задан 27.02.2012, 08:52

3 ответа

Вот история того, как я нашел причину своей высокой задержки DPC.


Моя система испытывала щелчки и появляется во время воспроизведения звука. Я знал, что это означало, что что-то в привилегированном режиме было hogging ЦП. Моя первая мысль состояла в том, чтобы ввести по абсолютному адресу вокруг Проводника Процесса и видеть, выглядело ли что-нибудь неуместным. Единственной вещью, которая привлекла мое внимание, было чрезмерное количество времени, проведенное, выполняя Отложенные вызовы процедуры (DPCs):

Screenshot of Process Explorer showing high DPC time

Я знал, что DPCs являются кодом, выполняемым в драйвере; проблема состояла в том, чтобы выяснить который драйвер. Я обратился к Средству проверки Задержки DPC, которое показало мне, как плохо задержка была:

screenshot of DPC Latency Checker

Средство проверки Задержки DPC предлагает пройти устройства в Диспетчере устройств и отключить несущественные аппаратные средства один за другим (например, сетевая плата, звуковая карта), надеясь изолировать ошибочный драйвер. (Если Вы отключаете устройство, и задержка DPC внезапно отбрасывает: Вы нашли своего преступника!)

screenshot of disabling devices

К сожалению, после отключения всего я возможно мог (в то время как все еще способность использовать компьютер — не отключает Ваш жесткий диск, видеокарту, мышь, или концентратор USB, мышь включена!), задержка была все еще высока. Затем я обратился к Windows Performance Toolkit (часть Windows SDK), и превосходное сообщение в блоге Peter Weiland, "Измерив Время DPC". После установки Windows Performance Toolkit:

Screenshot of Windows SDK installer, with Windows Performance Toolkit being selected

Я открыл поднятую командную строку и работал:

>xperf -on Latency

Примечание: Latency группа является предопределенным набором событий, которые могут быть прослежены от поставщика Kernel Group:

>xperf -providers kg
   Base           : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+PROFILE+MEMINFO
   Diag           : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER+COMPACT_CSWITCH
   DiagEasy       : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER
   Latency        : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PROFILE
   ...

В этом случае Latency соответствует Флагам Ядра:

  • Процесс PROC_THREAD и Поток создают/удаляют
  • ЗАГРУЗЧИК Загрузка образа Привилегированного и непривилегированного режима / события Unload
  • ПРЕДСТАВЬТЕ Демонстрационный профиль ЦП
  • Контекстное переключение CSWITCH
  • DPC события DPC
  • События INTERRUPT Interrupt
  • Диск DISK_IO ввод-вывод
  • HARD_FAULTS трудные отсутствия страницы

После разрешения, которые работают в течение минуты, я остановил трассировку и имел его, сохраняют в файл:

C:\Users\Ian\Desktop\xperf -d thingy1.etl

И затем я просмотрел результаты трассировки с командой:

C:\Users\Ian\Desktop\xperf thingy1.etl

Это загружает графический Windows Performance Analyzer. Щелкая правой кнопкой по графику Использования ЦП DPC, я выбрал Сводную таблицу. Это показывает разбивку времени, проведенного в DPCs драйвером:

screenshot of XPerf output

Сразу же я вижу один драйвер (tsvp.sys) взятие в среднем выполнение 2,8 мс за DPC, которое является порядком величины медленнее, чем какой-либо другой драйвер:

screenshot

Поиск с помощью Google tsvp.sys дал мне ответ: CommView, который я недавно установил.

Вопрос теперь состоит в том, как отключить этот драйвер. Используя AutoRuns, я вижу, что он установлен как сервис драйвера:

screenshot of autoruns

Используя Диспетчер устройств, я могу отключить сервис, который размещает этот драйвер. Сначала необходимо Показать скрытые устройства, затем расшириться Non-Plug and Play Drivers узел:

screenshot of device manager

Наконец я мог остановить сервис драйвера, и я изменился, это - режим запуска от System (значение драйвера является основной частью Windows, и Windows не может загрузиться без него), к Demand (значение, я могу запустить драйвер, когда я хочу к):

screenshot of device manager

Остановка сервиса драйвера сразу зафиксировала мою задержку DPC:

screenshot

Я могу или не могу полностью удалить CommView, но на данный момент я решил Случай Высокой Задержки DPC.


Обновление: Запуск с Windows 8 Вы больше не можете видеть Драйверы Не-Plug and Play в Диспетчере устройств:

Отметьте Запуск с Windows 8 и Windows Server 2012, менеджер по Plug and Play больше не создает представления устройства для не-PnP (наследие) устройства. Таким образом нет таких устройств для просмотра в Диспетчере устройств. Для включения скрытых устройств в дисплей Диспетчера устройств нажмите View и выберите Шоу Скрытые Устройства.

Microsoft устранила функцию, и ничем замените ее. Хорошее задание.

В типичном гневе компьютерного фаната, некоторых бесполезных ответах:

  • Диспетчер устройств никогда не показывал не pnp драйверы
  • Почему Вам нужно это?

К счастью, NirSoft создал замену. ServiWin позволяет Вам видеть, остановить и запустить все сервисы (даже те, Microsoft решила, что администраторам нужно разрешить видеть):

screenshot of ServiWin

43
ответ дан 07.12.2019, 08:43

ОТЧЕТ О ВЫПОЛНЕНИИ РАБОТ

Лучшим инструментом, который я нашел до сих пор, является LatencyMon, который в основном делает все, что предшествование двум инструментам делают, не заставляя Вас думать. Страница загрузки просит, чтобы Вы зарегистрировались по электронной почте - но ничего не произошло для меня, когда я сделал это - но можно прокрутить к концу страницы для загрузки так или иначе.

alt text

13
ответ дан 07.12.2019, 08:43

Существует, вероятно, драйвер устройства, это заставляет Вашу систему напряженно трудиться. Один способ проанализировать это состоит в том, чтобы выполнить средство проверки задержки DPC. Затем отключите один драйвер за один раз и посмотрите, понижается ли загрузка DPC. (Проводник процесса также работает.)

Можно отключить драйверы устройств в Управлении компьютером-> Диспетчер устройств.

4
ответ дан 07.12.2019, 08:43

Теги

Похожие вопросы