Практическое руководство. Инструментирование службы .NET и сбор подробных данных об использовании времени с помощью командной строки профилировщика
В этом разделе описывается использование программ командной строки средств профилирования Visual Studio Premium для инструментирования службы .NET Framework.NET и сбора подробных данных об использовании времени.
![]() |
---|
Службу нельзя профилировать с помощью метода инструментирования, если ее нельзя перезапустить после включения компьютера, например если она запускается только при запуске операционной системы. Программы командной строки средств профилирования расположены в подкаталоге \Team Tools\Performance Tools каталога установки Visual Studio.На 64-разрядных компьютерах доступны 64-разрядные и 32-разрядные версии программ.Для использования программ командной строки профилировщика необходимо добавить путь к этим программам в переменную среды PATH окна командной строки или указать этот путь при вызове команды.Дополнительные сведения см. в разделе Указание пути к программам командной строки средств профилирования. Добавление данных об уровневом взаимодействии в ходе выполнения требует определенных процедур с средствами профилирования командной строки.Дополнительные сведения см. в разделе Добавление данных взаимодействия уровней из командной строки. |
Чтобы собрать подробные данные об использовании времени службой .NET Framework с помощью метода инструментирования, воспользуйтесь программой VSInstr.exe для создания инструментированной версии компонента.Далее замените неинструментированную версию службы инструментированной версией, убедившись, что для службы настроен запуск вручную.Воспользуйтесь программой VSPerfCLREnv.cmd для инициализации глобальных переменных среды профилирования и перезагрузите компьютер. Затем запустите профилировщик.
После запуска службы данные о времени автоматически сохраняются в файл данных.В ходе сеанса профилирования можно приостанавливать и возобновлять сбор данных.
Для завершения сеанса профилирования нужно выключить службу, а затем явным образом завершить работу профилировщика.В большинстве случаев рекомендуется удалять в конце сеанса значения переменных среды, используемые для профилирования.
Запуск приложения с профилировщиком
Запуск профилирования службы .NET Framework
Откройте окно командной строки.
Воспользуйтесь программой VSInstr для создания инструментированной версии двоичных файлов сборки.
Замените исходный двоичный файл инструментированной версией.В диспетчере служб Windows убедитесь, что для типа запуска службы задано значение "Вручную".
Инициализируйте переменные среды, используемые для профилирования .NET Framework.Type:
VSPerfClrEnv /globaltraceon
Перезагрузите компьютер.
Откройте окно командной строки.
Запустите профилировщик.Type:
**VSPerfCmd /start:trace /output:**OutputFile[Options]
Параметр /start:trace обеспечивает инициализацию профилировщика.
Параметр /output**:**OutputFile является обязательным при использовании параметра /start.Параметр OutputFile задает имя и расположение файла с данными профилирования (VSP-файла).
С параметром /start:trace можно использовать любые из следующих параметров.
Примечание
Обычно параметры /user и /crosssession являются обязательными для служб профилирования.
Параметр
Описание
/user:[Domain\]UserName
Задает домен и имя пользователя учетной записи, которая является владельцем профилируемого процесса.Этот параметр является обязательным только в том случае, если процесс выполняется от имени пользователя, отличного от пользователя, который выполнил вход в систему.Имя владельца процесса отображается в столбце "Имя пользователя" на вкладке "Процессы" диспетчера задач Windows.
Включает профилирование процессов в других сеансах.Этот параметр является обязательным, если приложение выполняется в рамках другого сеанса.Идентификатор сеанса отображается в столбце "Код сеанса" на вкладке "Процессы" диспетчера задач Windows.Для /crosssession может быть задано сокращение /CS.
/waitstart[:Interval]
Задает (в секундах) интервал ожидания инициализации профилировщика до возвращения ошибки.Если значение Interval не указано, профилировщик ожидает в течение неограниченного периода.По умолчанию немедленно возвращается параметр /start.
Для запуска профилировщика с приостановкой сбора данных добавьте параметр /globaloff в командную строку /start.Для возобновления профилирования используйте параметр /globalon.
/counter:Config
Собирает данные счетчика производительности процессора, заданного параметром Config.Данные, собранные для каждого события профилирования, дополняются данными счетчиков.
/wincounter:WinCounterPath
Задает счетчик производительности Windows, данные которого следует собирать в процессе профилирования.
/automark:Interval
Используйте только с /wincounter.Задает интервал времени (в миллисекундах) между событиями сбора данных счетчика производительности Windows.Значение по умолчанию — 500 мс.
/events:Config
Задает событие трассировки событий Windows, данные которого следует собирать в процессе профилирования.События трассировки событий Windows собираются в отдельный ETL-файл.
Запустите службу с помощью диспетчера служб Windows.
Управление сбором данных
Если запущена служба, с помощью параметров средства VSPerfCmd.exe можно начинать и прекращать запись данных в файл данных профилировщика.Управление сбором данных позволяет собирать данные на различных этапах выполнения программы, например, при запуске или завершении работы службы.
Запуск и остановка сбора данных
Следующие пары параметров VSPerfCmd используются для запуска и остановки сбора данных.Задайте каждый параметр в отдельной строке командной строки.Запуск и приостановка сбора данных могут выполняться неоднократно.
Параметр
Описание
Запускает (/globalon) или останавливает (/globaloff) сбор данных для всех процессов.
/processon:PID/processoff:PID
Запускает (/processon) или останавливает (/processoff) сбор данных для процесса с указанным идентификатором процесса (PID).
/threadon:TID/threadoff:TID
Запускает (/threadon) или останавливает (/threadoff) сбор данных для потока с указанным идентификатором потока (TID).
Для добавления метки профилирования в файл данных можно также использовать параметр VSPerfCmd.exe/mark.Команда /mark добавляет идентификатор, отметку времени и необязательную определенную пользователем текстовую строку.Метки могут использоваться для фильтрации данных в отчетах профилировщика и представлениях данных.
Завершение сеанса профилирования
Для завершения сеанса профилирования остановите службу, в которой выполняется инструментированный компонент, а затем воспользуйтесь параметром VSPerfCmd/shutdown, чтобы выключить профилировщик и закрыть файл данных профилирования.Команда VSPerfClrEnv /globaloff удаляет переменные среды, используемые для профилирования.
Для вступления в силу новых параметров среды необходимо перезагрузить компьютер.
Завершение сеанса профилирования
Остановите службу с помощью диспетчера служб.
Завершите работу профилировщика.Type:
VSPerfCmd /shutdown
После завершения профилирования удалите значения переменных среды этого процесса.Type:
VSPerfClrEnv /globaloff
Замените инструментированный модуль на оригинал.При необходимости измените тип запуска службы.
Перезагрузите компьютер.
См. также
Основные понятия
Профилирование служб из командной строки
Другие ресурсы
Представление данных метода инструментирования профилировщика