Знакомство со способами выявления пороговых значений производительности

Обновлен: Ноябрь 2007

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

Счетчик производительности следит за поведением объектов производительности компьютера. Эти объекты включают в себя физические компоненты, такие как процессоры, диски и память и системные объекты, такие как процессы и потоки. В Visual Studio и SDK (пакет средств разработки программного обеспечения) для Windows эти объекты производительности рассматриваются как категории. Системные счетчики, относящиеся к одному и тому же объекту производительности, группируются в категории, что отражает их общую направленность. При создании экземпляра компонента PerformanceCounter сначала указывается категория, с которой будет взаимодействовать компонент, а потом внутри этой категории выбирается счетчик, с которым будет осуществляться взаимодействие.

Примером категории счетчиков производительности в Windows является категория "Память". Системные счетчики в этой категории отслеживают такие данные, как количество доступных и кэшируемых байтов. Чтобы узнать в приложении количество кэшируемых байтов, нужно создать экземпляр компонента PerformanceCounter и связать его с категорией "Память", а затем выбрать в этой категории соответствующий счетчик (в данном случае счетчик кэшируемых байтов).

В некоторых случаях категории делятся и дальше — на экземпляры. Экземпляры отслеживают данные о нескольких появлениях объекта, к которому относится категория. Обратите внимание, что экземпляры применяются к категории в целом, а не к отдельным счетчикам. Каждый счетчик внутри категории имеет отдельный определенный для категории экземпляр. Например, категория "Процесс" содержит экземпляры с именами "Idle" и "System". Каждый счетчик внутри этой категории определяет данные двумя указанными способами, отображая сведения о простаивающих или системных процессах. Структура категории и счетчиков выглядит примерно следующим образом.

Категории, экземпляры и счетчики
Экземпляры категорий Visual Basic

Как видно, категория "Процесс" содержит два экземпляра, и, таким образом, оба имеющихся в данной категории счетчика также содержат экземпляры "Idle" и "System". Дополнительные сведения об экземплярах см. в разделе Практическое руководство. Добавление и удаление экземпляров счетчиков производительности.

Хотя в системе доступно много других категорий счетчиков, категории по умолчанию, с которыми наиболее часто будет осуществляться взаимодействие, включают в себя категории "Кэш", "Память", "Объекты", "Физический диск", "Процессор", "Сервер", "Система" и "Потоки".

Данные счетчиков производительности

В счетчиках производительности сохраняются данные о различных частях системы. Эти значения не хранятся как записи, но они сохраняются, пока для заданной категории дескриптор остается открытым в памяти. Процесс извлечения данных из счетчика производительности называется выборкой. При получении выборки происходит извлечение непосредственного или рассчитанного значения счетчика.

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

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

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

Работа со счетчиками производительности в приложениях .NET

С помощью компонента PerformanceCounter возможно подключение к установленным на сервере существующим счетчикам, к которым имеется доступ, или же создание пользователем собственных счетчиков производительности. Можно читать данные из любого счетчика и записывать их в собственные пользовательские счетчики.

Для подключения к существующему счетчику производительности необходимо указать компьютер, на котором существует счетчик, категорию счетчика и имя самого счетчика. Кроме того, имеется возможность задания нужного экземпляра счетчика, если счетчик имеет несколько экземпляров. После этого из счетчика можно читать любые данные. Кроме того, можно перечислить существующие на компьютере категории, счетчики и экземпляры, используя код, или же использовать обозреватель серверов для просмотра списка существующих на компьютере счетчиков.

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

Для просмотра (по категориям) существующих на сервере счетчиков и экземпляров, по которым они классифицируются, необходимо развернуть узел Счетчики производительности в обозревателе серверов. Кроме того, можно перетащить определенный счетчик производительности или экземпляр из обозревателя серверов в имеющийся в Microsoft Visual Studio конструктор компонентов, чтобы создать экземпляр компонента PerformanceCounter с автоматически установленным свойством, указывающим на выбранный счетчик.

При использовании в приложениях ASP.NET компонента PerformanceCounter параметры учетной записи ASPNET, используемые по умолчанию, ограничивают доступ к счетчикам производительности. Настройки по умолчанию учетной записи ASPNET позволяют записывать, но не читать значения счетчиков производительности, и, кроме того, они не позволяют создавать новые категории. Чтобы разрешить создание новых категорий из учетной записи ASPNET, можно использовать олицетворение. Олицетворяемая сущность должна иметь права доступа, достаточные для создания категорий. Если для приложения требуются счетчики производительности, которые могут быть определены до момента развертывания, то они могут быть созданы проектом развертывания. Дополнительные сведения см. в разделе Безопасность веб-приложений ASP.NET.

bd20x32d.alert_note(ru-ru,VS.90).gifПримечание.

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

Дополнительные сведения см. в разделе Обозреватель серверов/обозреватель баз данных.

Ограничения

В данной версии при создании пользовательских счетчиков производительности может возникнуть необходимость перезапустить установленный вместе с Windows 2000 системный монитор (Perfmon.exe) перед просмотром их значений в указанном приложении.

В Microsoft Windows NT версии 4.0 класс PerformanceCounter поддерживается не полностью. Данные из системных счетчиков доступны для чтения, но пользовательские счетчики нельзя создавать, удалять, а также записывать в них данные.

См. также

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

Анализ данных счетчика производительности

Программная архитектура счетчика производительности

Время существования счетчика производительности

Типы счетчиков производительности