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

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 33014

Скачиваний: 742

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Утилиты для работы с процессами и диагностики 

Глава 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


background image

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


background image

Утилиты для работы с процессами и диагностики 

Глава 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


background image

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


background image

Утилиты для работы с процессами и диагностики 

Глава 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