Измерение производительности приложения из командной строки
Вы можете собирать сведения о производительности приложения с помощью средств командной строки. Вы можете собирать данные о производительности для использования ЦП, выделения памяти .NET, инструментирования и запросов к базе данных.
В примере, описанном в этой статье, вы собираете сведения о производительности для Блокнота Майкрософт, но один и тот же метод можно использовать для профилирования любого процесса.
Заметка
Сведения о создании инструментированного компонента C/C++ из командной строки см. в разделе Инструментирование собственного автономного компонента перед выполнением следующих действий в этой статье. Для данных об использовании ЦП можно использовать процедуры, описанные в этой статье.
Необходимые условия
Visual Studio 2019 или более поздней версии
Знакомство с инструментами командной строки
Чтобы собрать сведения о производительности на удаленном компьютере без установки Visual Studio, установите средства удаленного доступа для Visual Studio на удаленном компьютере. Версия инструментов должна соответствовать вашей версии Visual Studio.
Большинство агентов коллекции поддерживают .NET Core, .NET 5+, .NET Framework и C++. Однако поддержка ограничена поддержкой, предоставляемой соответствующим средством производительности. Например, агент коллекционирования данных базы данных ограничен .NET Core и .NET 5+.
Сбор данных о производительности
Профилирование с помощью средств командной строки диагностики Visual Studio осуществляется за счет подключения инструмента профилирования вместе с одним из агентов сбора к процессу. При присоединении средства профилирования начинается сеанс диагностики, который фиксирует и сохраняет данные профилирования, пока средство не будет остановлено, в какой момент данные экспортируются в файл .diagsession. Затем этот файл можно открыть в Visual Studio для анализа результатов.
Запустите Блокнот, а затем откройте диспетчер задач, чтобы получить свой идентификатор процесса (PID). В диспетчере задач найдите PID на вкладке Подробности.
Откройте командную строку и перейдите в каталог с исполняемым файлом агента сбора данных, который обычно располагается здесь (для 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.
Запустите VSDiagnostics.exe, введя следующую команду.
VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>
Аргументы, которые должны быть включены:
- < идентификатор> определяет сеанс сбора. Идентификатор должен быть номером от 1 до 255.
- < pid>, PID процесса, который вы хотите профилировать, в этом случае piD, который вы нашли на шаге 1.
- < configFile>, файл конфигурации для агента коллекции, который вы хотите запустить. Дополнительные сведения см. в файлах конфигурации для агентов.
Например, можно использовать следующую команду для агента CPUUsageBase, заменив pid, как описано ранее.
VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.json
Кроме того, можно использовать команду
launch
для запуска исполняемого файла. В этом сценарии вам не нужно получить идентификатор процесса и присоединиться к нему. Все средства поддерживают командуlaunch
, хотя некоторые из них, такие как Instrumentation и .NET Allocation Tool, не поддерживаютattach
. Например, используйте следующую команду, чтобы запустить исполняемый файл и собрать данные инструментирования:VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.json
Измените размер блокнота или введите в него что-то, чтобы убедиться, что собираются интересные сведения о профилировании.
Остановите сеанс сбора и отправьте выходные данные в файл, введя следующую команду.
VSDiagnostics.exe stop <id> /output:<path to file>
Найдите выходные данные файла .diagsession из предыдущей команды и откройте его в Visual Studio (файл>Открыть) для проверки собранных сведений.
Чтобы проанализировать результаты, ознакомьтесь с документацией по соответствующему инструменту производительности. Например, это может быть средство использования ЦП, инструмент для выделения объектов .NET , средство инструментированияили инструмент работы с базой данных.
Файлы конфигурации агента
Агенты сбора являются взаимозаменяемыми компонентами, которые собирают различные типы данных в зависимости от того, что вы пытаетесь измерить.
Для удобства рекомендуется хранить эти сведения в файле конфигурации агента. Файл конфигурации — это файл .json, содержащий как минимум имя .dll и COM CLSID. По умолчанию можно найти примеры файлов конфигурации в следующей папке:
Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs
Конфигурации CpuUsage (Base/High/Low) связаны с данными, собранными для инструмента профилирования использования процессора . Конфигурации DotNetObjectAlloc (Base/Low) соответствуют данным, собранным для средства выделения объектов .NET.
Базовые или низкие или высокие конфигурации относятся к частоте выборки. Например, низкая — 100 выборок/секунда, а высокая — 4000 выборок в секунду.
Для того чтобы инструмент VSDiagnostics.exe работал с агентом сбора, требуется наличие как библиотеки DLL, так и COM CLSID для соответствующего агента. Кроме того, агент может иметь дополнительные параметры конфигурации, которые указаны в файле конфигурации и представлены в виде корректно экранированного JSON.
Разрешения
Чтобы профилировать приложение, требующее повышенных разрешений, необходимо сделать это из командной строки с повышенными привилегиями.