Использование счетчиков производительности рабочих единиц

Счетчики производительности рабочих единиц позволяют платформе Windows получить представление о процессах приложения. Рабочие единицы позволяют приложениям описывать, какие части приложения выполняются в определенном процессе, и запрашивать владение. Например, веб-браузер имеет собственный диспетчер задач для управления всеми своими процессами; с помощью счетчика производительности рабочей единицы этот уровень детализации и управления можно получить в диспетчере задач Windows.

Например, рассмотрим браузер Microsoft Edge, работающий на устройстве пользователя. Браузер выполняется в определенном процессе, но другие процессы создаются для размещения вкладок, сетевых и звуковых служб, расширений и других функций. Конкретный процесс можно использовать для выполнения нескольких единиц работы, и разные приложения могут совместно использовать их. Внутренне браузер знает о своих зависимостях и способах взаимодействия с необходимыми процессами, но платформа Windows и другие приложения не знают, как создается браузер. Наличие таких сведений полезно для предоставления более точных сведений об использовании ресурсов и помощи в диагностике проблем с приложением; Диспетчер задач может сообщать, какие единицы работы выполняются в процессе. Благодаря этому отладчики могут упростить рабочие нагрузки разработчика, описывая, какие работы выполняются в процессе.

Каждая рабочая единица имеет следующие свойства.

  • AppOwnerProcessId: идентификатор процесса, которому принадлежит данная рабочая единица.
  • HostProcessId: идентификатор процесса, в котором выполняется данная рабочая единица.
  • Тип: способ интерпретации рабочей единицы приложением, получающим его.
  • Заголовок: метка для рабочей единицы.
  • UniqueId: идентификатор рабочей единицы.

Контракт данных

Сведения, совместно используемые с рабочими единицами на платформе Windows, доступны для запроса любым приложением, работающим в системе. Данные предоставляются и используются с помощью API счетчика производительности, общедоступных и задокументированных. В рамках реализации счетчики производительности должны иметь уникальную строку идентификатора, которая используется для идентификации метки для рабочей единицы. Ожидаемый формат строки уникального идентификатора счетчика производительности — .

  • Строка в начале WorkUnit.
  • 1 на основе uniqueId.
  • идентификатор процесса, в котором выполняется рабочая группа.
  • идентификатор процесса main, который представляет приложение.
  • понятное название рабочей группы.

Примечание

Если необходимо обновить сведения о рабочей единице (например, название было изменено), он сохраняет свой uniqueId. Новые единицы должны использовать новые уникальные идентификаторы. Значение uniqueId должно быть сцеплено с помощью символа "|", как показано в следующем примере.

Образец.

"WorkUnit|1|4321|1019|Instance 1 of pid 1111, owned by 1111"
"WorkUnit|1|8765|1019|Instance 1 of pid 5555, owned by 5555"
"WorkUnit|1|9999|1019|Instance 1 of pid 9999, owned by 9999"
"WorkUnit|2|4321|1019|Instance 2 of pid 1234, owned by 4321"
"WorkUnit|2|8765|1019|Instance 2 of pid 5678, owned by 8765"

Предоставление рабочих единиц

Вы можете создавать экземпляры набора счетчиков производительности рабочей единицы с помощью API счетчика производительности. Следуйте описанному выше контракту данных , чтобы убедиться, что другие приложения могут успешно проверять и использовать ваши данные.

Визуализация рабочих единиц

Если вы хотите запрашивать данные из счетчика производительности рабочей единицы, можно использовать API счетчика производительности или приложение Монитор производительности.

  1. Введите "perfmon" в командной строке или в диалоговом окне Выполнить, чтобы запустить средство PerfMon.
  2. Выберите "Монитор производительности" в разделе "Средства мониторинга".
  3. Нажмите кнопку "Добавить счетчики" (зеленый знак "+").
  4. Выберите и разверните раздел "Рабочая единица", чтобы просмотреть счетчики, предоставляемые запущенными приложениями.
  5. Выберите указанные счетчики: "Идентификатор процесса владельца приложения" и "Идентификатор хост-процесса".
  6. Выберите "Все экземпляры" и нажмите кнопку "Добавить".
  7. Нажмите кнопку "ОК".
  • Выбор счетчика рабочей единицы в пользовательском интерфейсе Снимок экрана: окно добавления счетчика. Рабочая единица выделена в окне как счетчик для добавления.