Измерение производительности приложения из командной строки

Сведения о производительности приложения можно собирать с помощью программы командной строки. Вы можете собирать данные о производительности для использования ЦП, выделения памяти .NET, инструментирования и запросов к базе данных.

В примере, описанном в этой статье, вы можете собирать данные производительности для Блокнота (Майкрософт), но тот же метод можно использовать для профилирования любого процесса.

Примечание.

Инструментирование C/C++ из командной строки см. в статье Инструментирование собственного автономного компонента. Для данных об использовании ЦП можно использовать процедуры, описанные в этой статье.

Необходимые компоненты

  • Visual Studio 2019 или более поздние версии

  • Знание программы командной строки

  • Чтобы собрать сведения о производительности на удаленном компьютере без установки Visual Studio, установите на нем инструменты удаленной отладки для Visual Studio. Версия средств должна соответствовать версии Visual Studio.

Сбор данных производительности

Профилирование с помощью средств CLI диагностики Visual Studio осуществляется путем присоединения к процессу средства профилирования, а также одного из агентов-сборщиков. При подключении средства профилирования вы начинаете сеанс диагностики, который фиксирует и сохраняет данные профилирования, пока средство не будет остановлено, после чего эти данные экспортируются в файл .diagsession. Затем этот файл можно открыть в Visual Studio, чтобы проанализировать результаты.

  1. Запустите Блокнот и откройте диспетчер задач, чтобы получить его идентификатор процесса (PID). В диспетчере задач найдите PID на вкладке Сведения.

  2. Откройте командную строку и перейдите в каталог с исполняемым файлом агента сбора, обычно здесь (для Visual Studio Enterprise).

    <Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\

    <Visual Studio installation folder>\2019\Enterprise\Team Tools\DiagnosticsHub\Collector\

    Для удаленных средств исполняемый файл агента коллекции находится в этом расположении:

    Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\

    Program Files\Microsoft Visual Studio 16.0\Team Tools\DiagnosticsHub\Collector\

    Примечание.

    При использовании командной строки в удаленных сценариях необходимо выполнить инструкции командной строки на удаленном компьютере. Если вы хотите подключиться к удаленному компьютеру из Visual Studio, используйте профилировщик производительности в Visual Studio.

  3. Запустите VSDiagnostics.exe, введя следующую команду.

    VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
    

    Необходимо включить следующие аргументы:

    • <id> Identifies the collection Указывает сеанс сбора. Идентификатор должен быть числом от 1 до 255.
    • <pid>, идентификатор процесса для профилирования, в данном случае это идентификатор, найденный на шаге 1.
    • <configFile>, файл конфигурации для агента сборки, который вы хотите запустить. Дополнительные сведения см. в разделе Файлы конфигурации для агентов.

    Например, можно использовать следующую команду для агента CPUUsageBase, заменив pid, как описано выше.

    VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
    

    Кроме того, можно использовать launch команду для запуска исполняемого файла. В этом сценарии вам не нужно получить идентификатор процесса и присоединиться к нему. Все средства поддерживают launch команду, хотя некоторые из них не поддерживаются attach, например инструментирование и средство выделения .NET. Например, используйте следующую команду, чтобы запустить исполняемый файл и собрать данные инструментирования:

    VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
    
  4. Измените размер Блокнот или введите в него текст, чтобы собрать интересные данные профилирования.

  5. Остановите сеанс сбора и отправьте выходные данные в файл, введя следующую команду.

    VSDiagnostics.exe stop <id> /output:<path to file>
    
  6. Найдите выходной файл .diagsession, полученный в результате предыдущей команды, и откройте его в Visual Studio (Файл>Открыть), чтобы изучить собранные сведения.

    Для анализа результатов ознакомьтесь с документацией по соответствующему средству контроля производительности. Например, это может быть средство выделения ЦП, инструмент выделения объектов .NET, инструментирование или средство базы данных.

Файлы конфигурации агента

Агенты сборки являются взаимозаменяемыми компонентами, которые собирают различные типы данных в зависимости от того, что вы пытаетесь измерить.

Для удобства рекомендуем хранить эту информацию в файле конфигурации агента. Файл конфигурации — это файл .json, содержащий как минимум имя .dll и его CLSID COM. По умолчанию можно найти примеры файлов конфигурации в следующей папке:

Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs

Конфигурации CpuUsage (базовая/низкая/высокая), которые соответствуют данным, собранным для инструмента профилирования Загрузка ЦП. Конфигурации DotNetObjectAlloc (базовая/низкая), которые соответствуют данным, собранным для инструмента выделения объектов .NET.

Базовая/низкая/высокая конфигурации означают частоту выборки. Например, "Низкая" означает 100 выборок в секунду, а "Высокая" — 4000 выборок в секунду.

Чтобы средство VSDiagnostics.exe работало с агентом сбора, ему требуется DLL-файл и CLSID COM для соответствующего агента. Агент также может иметь дополнительные параметры конфигурации. Это любые параметры, указанные в файле конфигурации в формате JSON с правильным экранированием.

Разрешения

Чтобы выполнить профилирование приложения, которое требует повышенного уровня разрешений, используйте командную строку с повышенными привилегиями.