Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf
Добавлен: 29.10.2018
Просмотров: 33014
Скачиваний: 742

Утилиты для работы с процессами и диагностики
Глава 7 227
Параметр –o
Если использовать эту команду, VMMap при запуске откроет указанный
входной файл .MMP.
Восстановление параметров VMMap по умолчанию
VMMap сохраняет все параметры конфигурации в разделе реестра HKEY_
CURRENT_USER\ Software\Sysinternals\VMMap. Самый простой способ
восстановить все параметры конфигурации VMMap, установленные по
умолчанию, — закрыть VMMap, удалить этот раздел реестра и снова запу-
стить VMMap.
ProcDump
ProcDump позволяет наблюдать за процессом и создавать дамп-файл в за-
данные моменты, например, в случае превышения процессом пороговых
значений использования ЦП или памяти, возникновения исключений, ава-
рийного завершения, зависания пользовательского интерфейса или превы-
шения пороговых значений счетчиков производительности. ProcDump мо-
жет делать дамп один раз либо каждый раз, когда возникает заданная ситуа-
ция. Кроме того, ProcDump может генерировать дамп сразу либо делать это
периодически.
Рис. 7-12. ProcDump запускает процесс и сбрасывает его дамп, если процесс занимает
ЦП более трех секунд
Файл дампа процесса — это подробный моментальный снимок внутренне-
го состояния процесса, который администраторы и разработчики могут ис-
пользовать для определения источников проблем с приложениями. Файлы
дампа анализируются при помощи отладчика, например, WinDbg из средств
Debugging Tools for Windows.
ProcDump мало влияет на систему при мониторинге процесса и поэтому
является идеальным инструментом для получения информации о пробле-
мах, которые трудно изолировать и воспроизвести, даже если проблемная
SIN_ch_07.indd 227
27.12.2011 14:30:25

228 Часть
II
Работа с утилитами
ситуация повторяется раз в месяц. ProcDump не останавливает процесс, ко-
торый он отслеживает, дампы можно получать без вмешательства в работу
процесса.
В ProcDump появился новый тип дампов — miniplus, который удобен для
громоздких процессов, таких как Exchange Server и SQL Server. Дамп miniplus
идентичен полному дампу памяти за исключением крупных областей памяти
(таких как кеш). Он позволяет уменьшить размер дампов указанных процес-
сов на 50-90% без ущерба для эффективности анализа (рис. 7-12).
Синтаксис командной строки
Ниже приведен полный синтаксис командной строки ProcDump (см.
табл. 7-1); подробнее эти параметры рассматриваются в последующих раз-
делах.
procdump [-c процент [-u]] [-s n] [-n счет] [-m предел] [-h] [-e [1] [-b]] [-t]
[-p счетчик порог]
[-ma | -mp] [-r] [-o] [-64]
{ {имя_процесса | PID} [файл_дампа] | -x {файл_образа} {файл_дампа}
[аргументы]}
Табл. 7-1. Параметры командной строки ProcDump
Параметр
Описание
Целевой процесс и файл дампа
имя_процесса
Имя целевого процесса. Экземпляр должен быть уникальным
и уже запущенным
PID
Идентификатор (PID) целевого процесса
файл_дампа
Имя файла дампа. Если процесс уже запущен, указывать не
обязательно; если используется параметр –x — обязательно
файл_образа
Имя исполняемого файла для запуска
аргументы
Необязательные аргументы командной строки, передающиеся
новому процессу
Условия получения дампа
-с процент
% использования ЦП, при превышении которого будет получен
дамп
-u
Используется вместе с –c для масштабирования порога с учетом
числа процессоров
-s n
При использовании с –c указывает длительность высокой
загрузки ЦП до получения дампа.
При использовании с –p указывает длительность превышения
порога счетчика производительности до получения дампа.
При использовании только с –n и никакими другими условиями
указывает интервал получения дампов в секундах
SIN_ch_07.indd 228
27.12.2011 14:30:26

Утилиты для работы с процессами и диагностики
Глава 7 229
Табл. 7-1. (окончание)
Параметр
Описание
-m предел
Указывает предел выделения памяти в МБ, при достижении
которого записывается дамп
-h
Создает дамп, когда обнаруживается зависшее окно
-e
Создает дамп, когда возникает необрабатываемое исключение.
Если указать значение 1, дамп будет создаваться также при first-
chance exception
-b
Если используется вместе с –e, точки останова считаются
исключениями; в противном случае игнорируются
-t
Создает дамп при завершении процесса
-p счетчик порог
Создает дамп, когда указанный счетчик производительности
превышает указанный порог
Параметры файла дампа
-ma
Включает в дамп память всех процессов
-mp
Создает дамп без крупных областей памяти (miniplus)
-r
Клонирует процесс для получения дампа, чтобы уменьшить
время его простоя (только в Windows 7, Windows Server 2008 R2
и выше)
-o
Переписывает существующий файл дампа
-64
Создает 64-разрядный дамп (только для версий 64-разрядных
версий Windows)
Выбор процесса для мониторинга
Можно запустить целевой процесс из командной строки ProcDump или от-
слеживать уже запущенный процесс. Чтобы запустить процесс при помощи
ProcDump, используйте параметр –x с именем исполняемого файла, именем
файла для записи дампа и аргументами командной строки, которые нужно
передать запускаемой программе. Заметьте, что необходимо указать реаль-
ное имя исполняемого файла, т.к. ProcDump не сможет вызвать приложение
по его отображаемому имени. Параметр –x и следующие за ним параметры
должны стоять в конце командной строки ProcDump.
Для мониторинга уже запущенной программы укажите в командной
строке имя образа или идентификатор процесса (PID). Если существует не-
сколько процессов с указанным именем, ProcDump не выберет ни один из
них; в этом случае следует указать PID.
Для мониторинга процесса, запущенного в том же контексте безопасно-
сти, что и ProcDump, администраторские права не требуются. Для монито-
ринга приложения, запущенного от имени другого пользователя или с более
высоким уровнем целостности требуются администраторские права, вклю-
чая привилегию Debug (Отладка).
SIN_ch_07.indd 229
27.12.2011 14:30:26

230 Часть
II
Работа с утилитами
Указание пути к файлу дампа
Параметр командной строки файл_дампа указывает путь к файлу дампа и
его имя. Этот параметр необходимо указывать при запуске целевого про-
цесса при помощи параметра –x. При выполнении мониторинга уже запу-
щенного процесса этот параметр не является обязательным; если опустить
его, ProcDump создаст файл дампа в текущей папке, назвав файл по имени
целевого процесса.
Параметр файл_дампа может задавать абсолютный или относительный
путь. Если этот путь указывает на существующую папку, ProcDump создаст
файл дампа в этой папке, используя имя процесса в качестве имени файла
дампа (в противном случае, последняя часть параметра становится базовым
именем файла дампа). Например, если указать в качестве параметра файл_
дампа путь C:\dumps\sample, и C:\dumps\sample является существующей
папкой, ProcDump создаст в этой папке файл дампа с именем процесса. Если
такой папки не существует, ProcDump создаст в папке C:\dumps файл дампа
с именем sample. Целевая папка должна существовать, иначе ProcDump со-
общит об ошибке и завершится.
Чтобы избежать случайной перезаписи других файлов дампа, ProcDump
создает уникальные имена файлов дампа, добавляя текущую дату и время в
формате базовоеимя_ггММдд_ЧЧммсс.dmp. Например, следующая коман-
да незамедлительно создает файл дампа для Textapp.exe:
procdump testapp
Если этот дамп был создан в 23:45:56 28 декабря 2010 г., он получит имя
Testapp_101228_234556.dmp. Такая система именования позволяет получать
имена, для которых алфавитный порядок сортировки соответствует хро-
нологическому (для файлов, созданных в 2000—2099 годах). Заметьте, что
формат имен файлов фиксирован и не зависит от региональных параметров.
ProcDump также устанавливает для файлов дампа расширение .dmp.
Дата и время не добавляются в имя файла, только если пользователь соз-
дает дамп сразу и указывает для него имя. Например, следующая команда
создает файл дампа для приложения Testapp.exe в файле c:\dumps\dumpfile.
dmp (если не существует папка c:\dumps\dumpfile):
procdump testapp c:\dumps\dumpfile
Если файл c:\dumps\dumpfile.dmp уже существует, ProcDump не перепи-
шет его, если не добавить в командную строку параметр -o.
Дампы, которые будут создаваться в дальнейшем при соответствии за-
данным условиям, всегда будут помечены датой и временем в имени файла.
Указание условий для создания дампа
Как уже говорилось, чтобы получить немедленный дам запущенного про-
цесса, просто укажите его имя или PID без других параметров (имя файла
дампа указать можно).
SIN_ch_07.indd 230
27.12.2011 14:30:26

Утилиты для работы с процессами и диагностики
Глава 7 231
ProcDump может наблюдать за использованием ЦП процессом и созда-
вать дамп при превышении определенного порога в течение указанного про-
межутка времени. В следующем примере ProcDump создает дамп и завер-
шает работу, если приложение Testapp занимает процессор более чем на 90%
в течение пяти секунд:
procdump -c 90 -s 5 testapp
Если параметр –s не указан, по умолчанию используется промежуток
в 10 секунд. Чтобы получить несколько дампов, на случай, если первое пре-
вышение вызвано случайными причинами, используйте параметр –n, что-
бы указать, сколько дампов необходимо сделать перед завершением работы.
В следующем примере ProcDump продолжит мониторинг Testapp и будет
создавать новый файл дампа каждый раз, когда приложение займет ЦП бо-
лее чем на 95% в течение 2 секунд, пока не создаст 10 дампов:
procdump -c 95 -s 2 -n 10 testapp
В многоядерных системах один поток не может потреблять 100% процес-
сорного времени. Так, в двуядерной системе один поток может потреблять
максимум 50%; на четырехядерной — максимум 25%. Чтобы изменить порог
–c в соответствии с числом ЦП в системе, добавьте параметр –u. Если вы-
полнить команду procdump –c 90 –u testapp на двуядерной системе, дамп бу-
дет создан, когда Testapp будет использовать более 45% ЦП в течение 10 се-
кунд, что эквивалентно 90% на одном из ЦП. Соответственно, в 16-ядерной
системе порогом будет значение 5,625%. Поскольку параметр –c требует
целого значения, в многоядерных системах применяется параметр –u, повы-
шающий точность заданного порога. Пример использования см. в главе 17.
Примечание Поток пользовательского режима, получающий мало времени ЦП, мо-
жет исполняться на нескольких ЦП, если только он не привязан к одному ЦП. Пара-
метр –u масштабирует порог лишь по числу ядер, но не гарантирует создание дампа
при превышении порога на одном конкретном ЦП. Это все равно невозможно, так как
в Windows нет средств для мониторинга соответствующей информации.
Для периодического создания дампов используйте параметры –s и –n без
иных условий. Параметр –s указывает число секунд между концом преды-
дущего дампа и началом следующего. Параметр –n указывает, сколько дам-
пов требуется получить. В следующем примере создается три дампа Testapp:
первый незамедлительно, другой через пять секунд и последний еще через
пять секунд.
procdump -s 5 -n 3 testapp
Чтобы создать дамп, когда в процессе возникает необрабатываемое ис-
ключение, используйте параметр –e. Параметр –e 1 позволяет создавать
дамп при любом исключении, включая первые экземпляры исключений.
Параметр –t создает дамп при завершении процесса. Он полезен для опре-
деления причины неожиданного завершения процесса, не вызванного необ-
SIN_ch_07.indd 231
27.12.2011 14:30:26