Форум программистов, компьютерный форум, киберфорум
Наши страницы

Windows 7

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 3, средняя оценка - 4.67
vavun
Выскочка
Эксперт HardwareЭксперт Windows
8776 / 4539 / 691
Регистрация: 07.04.2013
Сообщений: 13,473
Записей в блоге: 2
#1

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

08.03.2016, 08:57. Просмотров 9726. Ответов 3

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

Инструкция по выявлению драйверов вызывающих чрезмерное использование оперативной памяти.
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
16
Вложения
Тип файла: zip Files.zip (584.9 Кб, 196 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2016, 08:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Диагностика утечек памяти, выявление сбойных драйверов (Windows 7):

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

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

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

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

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

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

3
Turok123
3214 / 1290 / 164
Регистрация: 01.05.2013
Сообщений: 5,860
02.01.2017, 18:56 #2
vavun, можно ещё добавить инструкции о том,что делать если утечка происходит в Page Table.
Как по мне,тут всё хорошо расписано How to find source of memory leak in Windows 7?.
0
vavun
Выскочка
Эксперт HardwareЭксперт Windows
8776 / 4539 / 691
Регистрация: 07.04.2013
Сообщений: 13,473
Записей в блоге: 2
13.01.2017, 10:43  [ТС] #3
Turok123, я пока что "в отпуске" и на форуме появляюсь крайне редко и времени на это, к сожалению, нет.
Если хотите можете сами красиво оформить инструкцию прямо тут следующим сообщением или отдельной темой по желанию.
0
Turok123
3214 / 1290 / 164
Регистрация: 01.05.2013
Сообщений: 5,860
13.01.2017, 19:24 #4
vavun, С новым годом !!! Не .... много, побереги здоровье, а то с белкой встретишься ( шутка ).
0
13.01.2017, 19:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2017, 19:24
Привет! Вот еще темы с ответами:

Определение утечек памяти (Android Studio) - Программирование Android
Как можно в AS 1.5 определить строчку кода которая приводит к утечке памяти(не используя MAT)? Или MAT нужно обязательно? Добавлено...

Visual Studio 2015 Обнаружение утечек памяти - C++
В 13 студии в окно лога отладчика выводилось сообщение. Вася забыл про оператор delete! Detected memory leaks! Dumping objects -> ...

как проверить наличие утечек памяти в шаблоне? - C++
при удалении дерева есть подозрение что часть не удаляется. Количество вызовов деструкторов узлов меньше количества созданных. Такое...

Подскажите программу для диагностики утечек памяти - C++
Здравствуйте. В одном блоге почитал, что диспетчер задач для диагностики утечек не предназначен. Подскажите пожалуйста программу, которая...


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

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

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