Поделиться через


Практическое руководство. Присоединение профилировщика к службе .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

  1. Установите службу.

  2. Откройте окно командной строки.

  3. Инициализируйте переменные среды, используемые для профилирования.Type:

    VSPerfClrEnv /globalsampleon [/samplelineoff]

    • Параметр /globalsampleon включает выборку.

    • /samplelineoff отключает связывание собранных данных с определенными строками исходного кода.При выборе этого параметра данные назначаются только функциям.

  4. Перезагрузите компьютер.

  5. Откройте окно командной строки.

  6. Запустите профилировщик.Type:

    VSPerfCmd/start:sample:/outputOutputFile[Options]

    • Параметр /start:sample обеспечивает инициализацию профилировщика.

    • Параметр **/output:**OutputFile является обязательным при использовании параметра /start.Параметр OutputFile задает имя и расположение файла с данными профилирования (VSP-файла).

    С параметром /start:sample можно использовать любые из следующих параметров.

    ПримечаниеПримечание

    Обычно параметры /user и /crosssession являются обязательными для служб.

    Параметр

    Описание

    /user:[Domain\]UserName

    Задает домен и имя пользователя учетной записи, которая является владельцем профилируемого процесса.Этот параметр является обязательным только в том случае, если процесс выполняется от имени пользователя, отличного от пользователя, который выполнил вход в систему.Имя владельца процесса отображается в столбце "Имя пользователя" на вкладке "Процессы" диспетчера задач Windows.

    /crosssession

    Включает профилирование процессов в других сеансах.Этот параметр является обязательным, если служба выполняется в рамках другого сеанса.Идентификатор сеанса отображается в столбце "Код сеанса" на вкладке "Процессы" диспетчера задач Windows.Для /crosssession может быть задано сокращение /CS.

    /wincounter:WinCounterPath

    Задает счетчик производительности Windows, данные которого следует собирать в процессе профилирования.

    /automark:Interval

    Используйте только с /wincounter.Задает интервал времени (в миллисекундах) между событиями сбора данных счетчика производительности Windows.Значение по умолчанию — 500 мс.

    /events:Config

    Задает событие трассировки событий Windows, данные которого следует собирать в процессе профилирования.События трассировки событий Windows собираются в отдельный ETL-файл.

  7. Если необходимо, запустите службу.

  8. Присоедините профилировщик к службе.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

    Запускает (/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 удаляет переменные среды, используемые для профилирования, но конфигурация системы не изменяется до перезагрузки компьютера.

Завершение сеанса профилирования

  1. Для отключения профилировщика от целевого приложения выполните одно из следующих действий.

    • Остановите службу.

      -или-

    • Введите VSPerfCmd /detach.

  2. Завершите работу профилировщика.Type:

    VSPerfCmd /shutdown

  3. (Необязательно.) Удалите переменные среды, используемые для профилирования.Type:

    VSPerfClrEnv /globaloff

  4. Перезагрузите компьютер.

См. также

Основные понятия

Профилирование служб из командной строки

Другие ресурсы

Представления данных метода выборки профилировщика