Видеодрайвер перестал отвечать и был успешно восстановлен (Display driver has stopped working and has recovered)
Знаю, что многие пользователи Vista и Windows7 x86/x64 сталкивались с подобным сообщением. Проблема переползла и в Windows8, не потеряв актуальности.
Обычно это происходит во время игры, работы какого-то 3д приложения или просмотре видео, но бывает, что и буквально “на пустом месте”, просто во время набора текста или серфинга по интернету. Я предлагаю решение этой проблемы, которое неоднократно помогало мне и другим. Заодно – тут собраны и другие варианты решений, пожалуй, полнее не видел нигде.
После такого зависания вы увидите в трее сообщение “Atikmdag has stopped responding and has successfully recovered” для ATI, “nvlddmkm has stopped responding and has successfully recovered” для nVidia или “igfx has stopped responding and has successfully recovered” для intel (на руссом – “Atikmdag (или nvlddmkm, или igfx) перестал отвечать и был успешно восстановлен”).
Понятно, что перезапуск видеодрайвера вызывается каким-то событием, но проблема плавающая, единой причины срабатывания триггера остановки не известно, подобное сообщение может быть вызвано целой кучей причин, любая из которых приводит к увеличению задержки ответа драйвера. Зато прекрасно известно, какой механизм отвечает за такое поведение системы. Имя механизму- Timeout Detection and Recovery (TDR). Вкратце, это система восстановления после программных ошибок, избавляющая от необходимости перезагрузки компьютера в случае такой ошибки. Завязана она на драйверную модель, введённую в Vista и успешно использующуюся в Windows 7 и 8, и она действительно помогает избежать ситуаций, которые в случае с более ранними версиями Windows практически однозначно приводили к зависанию компьютера или BSOD и необходимости перезагрузки, с потерей всех несохранённых данных. В абсолютном большинстве случаев работа TDR пользователю не заметна, но в некоторых случаях получается такая вот „несостыковочка”. Это не проблема только лишь Windows (ведь как раз со стороны операционки «всё честно отработало»), это проблема также и производителей драйверов. И nvidia, и ati неоднократно заявляли, что «работают над следующей версией драйвера, в которой эта проблема будет устранена», но воз и ныне там, ситуация с момента выхода windows 7 и до сегодняшнего дня не изменилась. Скорее всего, кардинальных изменений они уже и не внесут – это может только нарушить сам принцип работы такого механизма.
Ниже я собрал возможные решения этой проблемы, среди которых есть и редко встречающиеся или описываемые.
- Обновление драйвера видеокарты до последней версии, либо наоборот, смена его на более старую версию. Более старые версии подходят для видеокарт, которые уже не получают новых возможностей от установки нового драйвера, а просто поддерживаются им.
- Обновление DirectX на последнюю возможную версию. Помогает откровенно редко, иногда помогает переустановка DX9, который может устанавливаться автоматически вместе с играми дополнительно к уже встроенноу DX10 семёрки.
- Изменение параметров сглаживания (antialiasing ) в настройках панели управления видеодрайвером. Конфликт может возникнуть, когда, например, в настройках игры выставлено сглаживание, а в настройках драйвера-оно принудительно отключено или стоит режим «замещение настроек приложения». Настройки подбираются индивидуально к каждому компьютеру.
- Отключение TDR в реестре или изменение времени её срабатывания. Ниже об этом способе написано подробнее.
- В комментариях подсказали ещё один вариант решения, но он подходит только для некоторых видеокарт. Это прошивка более новой версии bios вашей видеокарты. Подходит такой вариант для видеокарт, которые продаются с изначально завышенными, относительно стандартных референсных от ATI или nVidia, частотами (на них обычно есть маркировка overclocked). У подсказавшего этот вариант- это видеокарта от Gigabyte, 560Ti.
- Не решение, скорее workaround (“обходной способ”)- запуск видеофайла в плеере и сворачивание плеера.
- Ещё один вариант из комментариев, который, как и запуск видео, относится к “обходному пути”, а не решению проблемы по сути, но может помочь -это отключение Aero. смысл этого способа в том, что при включенном Aero в Windows для отрисовки интерфейса используется видеокарта, а если отключить его -то процессор, как в любой предыдущей версии Windows. Т.е. по сути, вы просто выключаете приложение, использующее ресурсы видеокарты. Вероятно, что при включении каких-нибудь игр всё вернётся.
- Опять же, из комментариев: можно чуть-чуть снизить частоту видеокарты немного, работающий вариант – это снижение всего на 1%, что не будет сказываться на производительности, но может решить проблемы “выбивания” драйвера. Сюда же отнесу и рекомендацию по увеличению напряжения на GPU на один шаг. Похоже, что корень проблемы в данном случае лежит там же, где и при перепрошивке видеобиоса.
- Если проблема возникает только при работе браузера (в интернете), велик шанс, что виноват flash player. В таком случае можно либо а) попробовать обновить flash-плеер c сайта Adobe, либо б)попробовать отключить аппаратное ускорение флеша (правой кнопокй на флеш-ролике, убрать галочку с “использовать аппаратное ускорение” (“use hardware acceleration”)
- Ещё один вариант,из комментариев – “скачал nvidia inspector 1.9.6.5 открыл программу там есть такой пункт driver version и далее показывает версию дрова видюхи после него есть маленький значок (в виде гаечного ключа) кликните по нему и откроется новая окна та м найдите пункт power throttle, потом измените значение на SET_POWER_THROTTLE_FOR_PCIe_COMPLIANCE_ON
и все можете забыть о прблеме)”. Автор комментария только не написал, что изначально там параметр
SET_POWER_THROTTLE_FOR_PCIe_COMPLIANCE_OFF,
и надо не забыть нажать apply для применения изменения.
Я не рассматриваю тут варианты исправления, связанные с неисправным железом- например, недостаточной мощностью блока питания, если у вас стационарный компьютер, или отваливащимся видеочипом. Такие случаи требуют индивидуального изучения и проверки железа, а проблема перезагрзуки драйвера тут – всего лишь один симптом.
Варианты 1 и 2 -это обычные и очевидные действия при проблемах с графикой и видео. Вариант 3 помогает, когда зависание драйвера наблюдается в играх и 3д-приложениях, а так же при включенном сглаживании в видеоплеерах при воспроизведении видео с помощью плеера, использующего VMR7/9 и 3д-поверхности. Вариант 5 – помогает только некоторым видеокартам на настольных компьютерах, и никогда не поможет на ноутбуках. Вариант 6 – не даёт драйверу ни секунды простоя, таким образом действуя на его “желание” зависнуть. В таком варианте предпочтительно, чтоб плеер декодировал видео средствами видеокарты, а не процессора. Вариант 8- по сути, просто отключение приложения, использующего видеокарту для отрисовки интерфейса, а потому -не может быть полноценным решением. Вариант 9 – встречается на системах, которые редко обновляются: flash довольно часто обновляется, и каждыый раз победно рапротует об исправленном миллионе ошибок. Суть 10-го варианта – в изменении напряжения для соотвествия стандартам pcie, но как оно работает точно- я не знаю, описания этого механизма я не нашёл.
В некоторых случаях ошибка „Видеодрайвер перестал отвечать и был успешно восстановлен” (“Display driver has stopped working and has recovered”) может проявляться и после применения всех вышеуказанных фиксов, и после переустановки системы по-новой, и вообще всегда. Это может указывать на уже физические проблемы- перегрев видеокарты, либо выход видеокарты из строя. Конечно, это самая нежелательная ситуация, но такое бывает. Проверить, кроме как установив точно такую же видеокарту, больше никак не получится.
Вариант 4 рассмотрю поподробнее, т.к. это решение упоминается значительно реже, а по действенности – среди первых. Итак, что нужно сделать. Запускаем редактор реестра, идём в ветку HKLM\System\CurrentControlSet\Control\GraphicsDrivers , и ищем там два ключа – TdrLevel и TdrDelay (если их там нет- а их скорее всего нет-то их нужно создать, тип REG_DWORD , не забудьте «десятичная система счисления» при редактировании параметра; значения описаны ниже). TdrLevel –собственно настройка восстановления. Стандартно имеет значение «3», соответствующее состоянию „TdrLevelRecover – Recover on timeout”, т.е. „восстановление по таймауту”. Выставляем значение „0”, соответствующее „TdrLevelOff – Detection disabled”, т.е. „детектирование отключено”. TdrDelay –установка времени задержки , т.е. реагирования на „безответность” драйвера. Стандартное значение –„2”, это время в секундах. Выставляем от 3х и больше, можно выявить необходимую задержку опытным путём, или сразу забабахать, например,”10” Полагаю, понятно, что в случае, если TdrLevel выставлен в «отключено», изменять время задержки (TdrDelay) смысле уже нет. Я бы рекомендовал начинать с увеличения времени вместо отключения-всё-таки сама по себе система восстановления вполне заслуживает того, чтобы жить, и может действительно спасти вам несохраненные данные в случае проблем с драйвером и необходимости экстренной перезагрузки.
После внесения изменений не забываем перезагружать компьютер, ключи реестра дадут эффект только после рестарта системы. Небольшая оговорка – этот способ поможет, если проблема с драйвером действительно лежит только в плоскости программного решения, и если для восстановления работоспособности драйвера не нужен «пинок», рестарт его. В других случаях – выключение этого параметра может привести к зависанию компьютера на момент, когда такая ситуация должна проявиться, так же, как это было на XP. Если после использования этого решения компьютер стал зависать там, где раньше выскакивало сообщение – то этоn вариант решения не для вас.
Статья от microsoft.com о TDR, на английском языке- находится здесь. Там описание всех ключей этой ветви реестра, но остальные, кроме описанных выше, не нужны. Как видите, эти ключи предназначены «for testing purposes only», но раз они есть, а другого внятного однозначного решения нет- пользуемся и радуемся, если помогло.
Проблема решается просто. Надо всего навсего запретить использование аппаратного ускорения в настройках браузера . Если их несколько, ТО ВО ВСЕХ. Рад был помочь.