Практическое руководство. Присоединение профилировщика к службе .NET для сбора статистики приложения с помощью командной строки
В этом разделе описано, как с помощью средств командной строки средств профилирования Visual Studio присоединить профилировщик к службе .NET Framework и собрать статистику производительности с помощью метода выборки.
![]() |
---|
Функции усиленной безопасности в Windows 8 и Windows Server 2012 требуют значительных изменений в том, как профилировщик Visual Studio выполняет сбор данных на этих платформах.Приложения Магазина Windows также требуют новых методов коллекции.Дополнительные сведения см. в разделе Профилирование приложений для Windows 8 и Windows Server 2012. Программы командной строки средств профилирования расположены в подкаталоге \Team Tools\Performance Tools каталога установки Visual Studio.На 64-разрядных компьютерах доступны 64-разрядные и 32-разрядные версии программ.Для использования программ командной строки профилировщика необходимо добавить путь к этим программам в переменную среды PATH окна командной строки или указать этот путь при вызове команды.Дополнительные сведения см. в разделе Указание пути к программам командной строки средств профилирования. Добавление данных об уровневом взаимодействии в ходе выполнения требует определенных процедур с средствами профилирования командной строки.Дополнительные сведения см. в разделе Добавление данных взаимодействия уровней из командной строки. |
Для сбора данных о производительности, полученных от службы .NET Framework, нужно воспользоваться программой VSPerfCLREnv.cmd, чтобы инициализировать соответствующие переменные среды.После этого следует перезагрузить компьютер, на котором размещена эта служба, и настроить его для профилирования.Затем профилировщик присоединяется к процессу службы.Когда профилировщик присоединен к службе, можно приостанавливать и возобновлять сбор данных.
Чтобы завершить сеанс профилирования, необходимо отсоединить профилировщик от службы и явным образом завершить его работу.В большинстве случаев рекомендуется удалять в конце сеанса значения переменных среды, используемые для профилирования.
Присоединение профилировщика
Присоединение профилировщика к службе .NET Framework
Установите службу.
Откройте окно командной строки.
Инициализируйте переменные среды, используемые для профилирования.Type:
VSPerfClrEnv /globalsampleon [/samplelineoff]
Параметр /globalsampleon включает выборку.
/samplelineoff отключает связывание собранных данных с определенными строками исходного кода.При выборе этого параметра данные назначаются только функциям.
Перезагрузите компьютер.
Откройте окно командной строки.
Запустите профилировщик.Type:
VSPerfCmd/start:sample:/outputOutputFile[Options]
Параметр /start:sample обеспечивает инициализацию профилировщика.
Параметр **/output:**OutputFile является обязательным при использовании параметра /start.Параметр OutputFile задает имя и расположение файла с данными профилирования (VSP-файла).
С параметром /start:sample можно использовать любые из следующих параметров.
Примечание
Обычно параметры /user и /crosssession являются обязательными для служб.
Параметр
Описание
/user:[Domain\]UserName
Задает домен и имя пользователя учетной записи, которая является владельцем профилируемого процесса.Этот параметр является обязательным только в том случае, если процесс выполняется от имени пользователя, отличного от пользователя, который выполнил вход в систему.Имя владельца процесса отображается в столбце "Имя пользователя" на вкладке "Процессы" диспетчера задач Windows.
Включает профилирование процессов в других сеансах.Этот параметр является обязательным, если служба выполняется в рамках другого сеанса.Идентификатор сеанса отображается в столбце "Код сеанса" на вкладке "Процессы" диспетчера задач Windows.Для /crosssession может быть задано сокращение /CS.
/wincounter:WinCounterPath
Задает счетчик производительности Windows, данные которого следует собирать в процессе профилирования.
/automark:Interval
Используйте только с /wincounter.Задает интервал времени (в миллисекундах) между событиями сбора данных счетчика производительности Windows.Значение по умолчанию — 500 мс.
/events:Config
Задает событие трассировки событий Windows, данные которого следует собирать в процессе профилирования.События трассировки событий Windows собираются в отдельный ETL-файл.
Если необходимо, запустите службу.
Присоедините профилировщик к службе.Type:
VSPerfCmd{PID/attach:|ProcName} [Sample Event] [/targetclr**:**Version]
- Задайте идентификатор процесса (PID) или имя процесса (ProcName) службы.Диспетчер задач Windows позволяет просмотреть идентификаторы и имена всех запущенных процессов.
По умолчанию данные о производительности собираются каждые 10 000 000 циклов тактовой частоты процессора без остановок.На процессоре с частотой 1 ГГц это приблизительно 100 экземпляров в секунду.Чтобы изменить длительность цикла тактовой частоты или задать другое событие выборки, можно воспользоваться одним из следующих параметров.
Пример события
Описание
/timer:Interval
Изменяет интервал выборки на число циклов тактовой частоты без остановок, заданное параметром Interval.
/pf[:Interval]
Изменяет событие выборки на ошибки страниц.Если указано значение Interval, задает количество ошибок страниц между выборками.По умолчанию используется значение 10.
/sys[:Interval]
Изменяет событие выборки на системные вызовы ядра операционной системы из процесса (syscall).Если указано значение Interval, задает количество вызовов между выборками.По умолчанию используется значение 10.
/counter:Config
Изменяет событие выборки, интервал для счетчика производительности процессора и интервал, заданный параметром Config.
- **targetclr:**Version задает версию среды CLR для профилирования, если в приложении загружено несколько версий среды выполнения.Необязательный параметр.
Управление сбором данных
Если запущена служба, с помощью параметров средства VSPerfCmd.exe можно начинать и прекращать запись данных в файл данных профилировщика.Управление сбором данных позволяет собирать данные на различных этапах выполнения программы, например, при запуске или завершении работы приложения.
Запуск и остановка сбора данных
Следующие пары параметров VSPerfCmd используются для запуска и остановки сбора данных.Задайте каждый параметр в отдельной строке командной строки.Запуск и приостановка сбора данных могут выполняться неоднократно.
Параметр
Описание
Запускает (/globalon) или останавливает (/globaloff) сбор данных для всех процессов.
/processon:PID/processoff:PID
Запускает (/processon) или останавливает (/processoff) сбор данных для процесса с указанным идентификатором процесса (PID).
/attach:{PID|ProcName} /detach[:{PID|ProcName}]
/attach запускает сбор данных для процесса, определяемого идентификатором или именем процесса./detach останавливает сбор данных для указанного процесса или, если он не задан, для всех процессов.
Для добавления метки профилирования в файл данных можно также использовать параметр VSPerfCmd.exe/mark.Команда /mark добавляет идентификатор, отметку времени и необязательную определенную пользователем текстовую строку.Метки могут использоваться для фильтрации данных в отчетах профилировщика и представлениях данных.
Завершение сеанса профилирования
Чтобы завершить сеанс профилирования, необходимо отсоединить профилировщик от всех профилируемых процессов и явным образом завершить его работу.Для отсоединения профилировщика от приложения при использовании метода выборки можно закрыть приложение или воспользоваться параметром VSPerfCmd /detach.Затем, для завершения работы профилировщика и закрытия файла данных профилирования используется параметр VSPerfCmd /shutdown.
Команда VSPerfClrEnv /globaloff удаляет переменные среды, используемые для профилирования, но конфигурация системы не изменяется до перезагрузки компьютера.
Завершение сеанса профилирования
Для отключения профилировщика от целевого приложения выполните одно из следующих действий.
Остановите службу.
-или-
Введите VSPerfCmd /detach.
Завершите работу профилировщика.Type:
VSPerfCmd /shutdown
(Необязательно.) Удалите переменные среды, используемые для профилирования.Type:
VSPerfClrEnv /globaloff
Перезагрузите компьютер.
См. также
Основные понятия
Профилирование служб из командной строки