Форум программистов, компьютерный форум, киберфорум
Наши страницы
Windows 7
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.95/74: Рейтинг темы: голосов - 74, средняя оценка - 4.95
vavun
9841 / 5212 / 800
Регистрация: 07.04.2013
Сообщений: 15,181
1

Диагностика утечек памяти, выявление сбойных драйверов

08.03.2016, 08:57. Просмотров 14959. Ответов 4

Если вы заметили ошибку или не точность, у вас есть важное дополнение или замечание - просьба об этом сообщить.

Инструкция по выявлению драйверов вызывающих чрезмерное использование оперативной памяти.
WikipediaУте́чка па́мяти (англ. memory leak) — процесс неконтролируемого уменьшения объёма свободной оперативной или виртуальной памяти компьютера, связанный с ошибками в работающих программах, вовремя не освобождающих ненужные уже участки памяти, или с ошибками системных служб контроля памяти.



0. Действительно ли происходит утечка памяти
1. Определение тегов расходующих память при помощи PoolMon
2. Поиск драйвера по тегу при помощи strings и sigcheck
3. Поиск тега системного драйвера в файле pooltag.txt
4. Общие рекомендации по устранению
5. Если самостоятельно определить причину не удалось
6. Необходимые программы и файлы

  • Данная инструкция предполагает, что очевидные причины излишнего потребления ОЗУ уже были исключены при помощи диспетчера задач и/или монитора ресурсов.
    Диагностика утечек памяти, выявление сбойных драйверов


  • Чтобы убедиться, что проблема излишнего потребления оперативной памяти имеет отношение к драйверам и/или оборудованию
    и сам факт утечки памяти вообще имеет место быть нужно запустить программу RAMMap.exe и открыть на дефолтной вкладке Use Counts:
    Диагностика утечек памяти, выявление сбойных драйверов


    Обращать внимание главным образом следует на Nonpaged Pool и Paged Pool
    Вот пример того, как может выглядеть утечка памяти:
    Диагностика утечек памяти, выявление сбойных драйверов


  • Так же следует обратить внимание на Driver Locked
    Хотя утечкой это и не является, но такое "резервирование" ОЗУ далеко не всегда является нормой:
    Диагностика утечек памяти, выявление сбойных драйверов


    Чаще всего причиной оказываются RAM диски или виртуальные машины.
    Описанный далее метод не подходит для выявления драйвера заблокировавшего таким способом участок памяти.

Если все прочие причины перерасхода ОЗУ исключены можно приступать к диагностике.

  1. Запустите PoolMon.exe от имени администратора (для x86 систем нужно запускать версию x86, для x64 желательно x64)
    И нажмите клавишу b, чтобы сортировка тегов производилась по использованию байтов от большего к меньшему (сверху вниз).
    В результате должна получиться вот такая картина:
    Диагностика утечек памяти, выявление сбойных драйверов


    В данном конкретном случае утечек памяти нет, но больше всех остальных расходуют память области с тегами NVRM и ViMm.
    Они и оказались в самом верху списка после сортировки:
    Диагностика утечек памяти, выявление сбойных драйверов


  2. Чтобы выяснить какому драйверу принадлежит тег создайте батник, который выполнит поиск потенциального виновника по тегу при помощи программы strings.exe среди всех загруженных в данный момент драйверов, и покажет краткую информацию о каждом найденном при помощи sigcheck:
    Windows Batch file
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    @echo off
     
    set TAG=????
     
    for /f "delims=" %%a in ('wmic sysdriver get PathName /value') do (
        for /f "tokens=2,* delims==?" %%i in ("%%a") do (
            strings -q "%%i\%%j" | findstr /i "%TAG%">nul && (
            sigcheck -q "%%i\%%j"&echo.
    )))
    pause
    Где вместо ???? нужно вписать интересующий нас тег.

    Например один из тегов, который был получен в предыдущем пункте:
    Windows Batch file
    set TAG=NVRM
    Файлы strings.exe и sigcheck положите в папку с батником или скопируйте в C:\Windows, без них поиск выполняться не будет.

    В итоге должен получиться вот такой батник (пример: strings.exe и sigcheck находятся в той же папке):
    Диагностика утечек памяти, выявление сбойных драйверов


    Сохраните батник, запустите его двойным кликом и дождитесь завершения поиска. Обычно для этого не требуется много времени.
    Диагностика утечек памяти, выявление сбойных драйверов


    Выяснилось, что тег NVRM относится к драйверу nvlddmkm.sys
    Диагностика утечек памяти, выявление сбойных драйверов


  3. Принадлежность тега ViMm тем же способом выяснить не удалось:
    Диагностика утечек памяти, выявление сбойных драйверов


    Но на помощь приходит файл pooltag.txt.
    Файл pooltag.txt содержит описание тегов пулов системных драйверов (поставляемых в составе ОС) и не содержит описания тегов сторонних драйверов.

    Произведите поиск тега ViMm в файле pooltag.txt
    Диагностика утечек памяти, выявление сбойных драйверов


    dxgkrnl.sys - это еще один графический компонент, но на этот раз системный.
    Диагностика утечек памяти, выявление сбойных драйверов


  4. Рекомендации по устранению:

    • nvlddmkm.sys - NVIDIA Windows Kernel Mode Driver

      Если сбойный драйвер оказался драйвером стороннего производителя, то нужно произвести обновление этого драйвера или откат к более ранней версии.
      Перед установкой нового драйвера настоятельно рекомендуется удалить старый драйвер и перезагрузиться.
      Диагностика утечек памяти, выявление сбойных драйверов


      Не вдаваясь в подробности, если этого не сделать, то, в некоторых случаях, система продолжает использовать старый драйвер даже после установки нового.
      Проверяйте и сравнивайте версию драйвера до и после обновления/отката.
      Если драйвер продолжает "течь" и после обновления/отката, то это может указывать на аппаратные проблемы.

    • dxgkrnl.sys - DirectX Graphics Kernel

      Если диагностика указывает на системный драйвер, скорее всего настоящей причиной является не он.
      В этом случае рекомендуется обновить ОС и проверить актуальность драйверов сторонних производителей.
      Может косвенно указывать на аппаратные проблемы.

  5. Если самостоятельно определить причину не удалось:

    • Создайте свою отдельную тему в разделе соответствующем вашей ОС
    • Подробно опишите при каких обстоятельствах наблюдается проблема
    • Предоставьте скриншот программы RAMMap с открытой вкладкой Use Counts
    • Предоставьте скриншот программы PoolMon с сортировкой по bytes (кнопка b )
    • Подготовьте отчет AIDA 64:
      Запускаете программу, жмете на кнопку "Отчет" --> выбираете профиль отчета "Все разделы" --> Формат отчета "html" --> Готово
      Файл Report.htm запаковываете в архив и выкладываете в своей теме

      Файлы и изображения загружайте на форум


Ссылки на актуальные версии программ: RAMMap, Sigcheck, Strings.
PoolMon.exe и pooltag.txt входят в состав Windows Driver Kit (WDK) 10

Файлы в архиве: BadPool.bat, poolmon.exe, pooltag.exe, RAMMap.exe, sigcheck.exe, strings.exe
17
Вложения
Тип файла: zip Files.zip (584.9 Кб, 256 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2016, 08:57
Ответы с готовыми решениями:

Обсуждение (Диагностика утечек памяти, выявление сбойных драйверов)
Обсуждение инструкции http://www.cyberforum.ru/windows7/thread1679703.html

Тема утечек памяти
Всем привет. Прошу проконсультировать по поводу утечек памяти, а именно, когда...

Обнаружение утечек памяти
Существуют ли какие-нибудь средства позволяющие отлаживать ошибки, вызванные...

Устал от утечек памяти
С этими утечками памяти в C++ просто беда. Посоветуйте, что можно сделать?...

Чтобы не было утечек памяти
Товарищи, такой вопрос: class node { int *a; double *b; vector<node *>...

4
Turok123
3632 / 1532 / 203
Регистрация: 01.05.2013
Сообщений: 6,638
02.01.2017, 18:56 2
vavun, можно ещё добавить инструкции о том,что делать если утечка происходит в Page Table.
Как по мне,тут всё хорошо расписано How to find source of memory leak in Windows 7?.
0
vavun
9841 / 5212 / 800
Регистрация: 07.04.2013
Сообщений: 15,181
13.01.2017, 10:43  [ТС] 3
Turok123, я пока что "в отпуске" и на форуме появляюсь крайне редко и времени на это, к сожалению, нет.
Если хотите можете сами красиво оформить инструкцию прямо тут следующим сообщением или отдельной темой по желанию.
0
Turok123
3632 / 1532 / 203
Регистрация: 01.05.2013
Сообщений: 6,638
13.01.2017, 19:24 4
vavun, С новым годом !!! Не .... много, побереги здоровье, а то с белкой встретишься ( шутка ).
0
Mage
0 / 0 / 0
Регистрация: 01.06.2015
Сообщений: 81
10.07.2018, 00:44 5
Я очень извиняюсь, но кто-нибудь может написать как создать бат файл через notepad++? Или есть другой способ?
0
10.07.2018, 00:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2018, 00:44

Подключении механизма обнаружение утечек памяти
// output N number of M devide L.cpp : Defines the entry point for the console...

Определение утечек памяти (Android Studio)
Как можно в AS 1.5 определить строчку кода которая приводит к утечке памяти(не...

Тулза для поиска утечек памяти
Прога, написанная мною, сильно тормозит. Скорее всего имеются утечки памяти....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru