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


Пошаговое руководство. Изменение и получение значений счетчика производительности

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

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

В этом пошаговом руководстве производится:

  • Создание и настройка компонента PerformanceCounter, предназначенного для взаимодействия с системным счетчиком.

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

  • Создание кода записи и считывания необработанного значения счетчика с помощью свойства RawValue.

  • Создание кода, в котором для изменения значения счетчика и считывания его нового значения используются методы Increment, IncrementBy и M:System.Diagnostics.PerformanceCounter.Decrement.

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

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

Создание приложения Windows

  1. В меню Файл откройте команду Создать и выберите Проект.

  2. В диалоговом окне Новый проект создайте Приложение Windows на языке Visual Basic или Visual C#. Назовите проект PerformanceCounterExample.

  3. Добавьте в приложение следующие элементы управления со вкладки Windows Formsпанели элементов:

    • Две метки;

    • Одно текстовое поле;

    • Пять кнопок.

  4. Задайте следующие свойства элементов управления:

    Элемент управления

    Свойство

    Значение

    Label1

    Name

    lblCounterValue

     

    Text

    (пусто)

    Label2

    Name

    lblSystemCounterValue

     

    Text

    (пусто)

    Textbox1

    Name

    txtValue

     

    Text

    (пусто)

    Button1

    Name

    btnSetRawValue

     

    Text

    Задать необработанное значение пользовательского счетчика

    Button2

    Name

    btnGetNextValue

     

    Text

    Получить следующее значение системного счетчика

    Button3

    Name

    btnIncrement

     

    Text

    Увеличить значение пользовательского счетчика на 1

    Button4

    Name

    btnDecrement

     

    Text

    Уменьшить значение пользовательского счетчика на 1

    Button5

    Name

    btnIncrementBy

     

    Text

    Увеличить значение пользовательского счетчика

  5. Расположите элементы управления в произвольном порядке.

  6. Сохраните результаты работы.

Создание и настройка компонента PerformanceCounter

  1. Откройте обозреватель серверов и выберите узел Серверы. Дополнительные сведения см. в разделе Практическое руководство. Подключение и инициализация обозревателя серверов/обозревателя баз данных.

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

  3. Раскройте узел Счетчики производительности и найдите узел Процессор.

  4. Найдите узел % загруженности процессора и раскройте его.

  5. Перетащите в форму счетчик _Total. В проект будет добавлен компонент PerformanceCounter, настроенный на использование счетчика _Total. Компонент называется PerformanceCounter1 в Visual Basic и performanceCounter1 — в Visual C#.

Считывание необработанного значения системного счетчика

  • Для создания обработчика события Click дважды щелкните в конструкторе кнопку Получить следующее значение системного счетчика. Этот метод будет возвращать вычисляемое, а не необработанное значение счетчика. Для считывания и отображения следующего значения счетчика, отслеживаемого экземпляром PerformanceCounter, добавьте следующий код:

    Private Sub btnGetNextValue_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnGetNextValue.Click
       lblSystemCounterValue.Text = _
          "The current value of the system counter is: " _
          & PerformanceCounter1.NextValue().ToString()
    End Sub
    
    private void btnGetNextValue_Click(object sender, System.EventArgs e)
    {
       lblSystemCounterValue.Text = 
          "The current value of the system counter is: " 
          + performanceCounter1.NextValue().ToString();
    }
    

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

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

  1. В меню Вид выберите пункт Конструктор, чтобы открыть конструктор формы Form1.

  2. Откройте в конструкторе обозреватель серверов и выберите узел Серверы. Дополнительные сведения см. в разделе Практическое руководство. Подключение и инициализация обозревателя серверов/обозревателя баз данных.

  3. В узле Серверы найдите узел, соответствующий текущему компьютеру, и раскройте его.

  4. Щелкните правой кнопкой мыши узел Счетчики производительности и выберите команду Создать новую категорию.

    Откроется диалоговое окно Построитель счетчиков производительности.

  5. В поле Имя категории введите MyNewCategory.

  6. Для добавления нового счетчика выберите Создать и дайте счетчику имя MyNewCounter. Нажмите ОК, чтобы создать новую категорию и новый счетчик.

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

    На этом этапе необходимо разрешение на запись в реестр. Если создание нового счетчика невозможно, обратитесь к системному администратору.

  7. В обозревателе серверов перейдите к новому счетчику и перетащите его на форму. В проект будет добавлен новый компонент PerformanceCounter, настроенный для работы с новым счетчиком MyNewCounter.

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

    После выполнения этих шагов на компьютере будет создан счетчик. Если бы это приложение развертывалось, то счетчик следовало бы создать на том компьютере, где осуществляется развертывание. Это можно сделать, добавив к проекту установщик. Выберите объект PerformanceCounter и выберите в окне Свойства команду Добавить установщик. Если эта команда недоступна, щелкните правой кнопкой мыши окно Свойства и выберите пункт Команды. Дополнительные сведения см. в разделе Знакомство с компонентами установки.

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

  1. Выберите в конструкторе PerformanceCounter2 (в Visual Basic) или performanceCounter2 (в Visual C#).

  2. Задайте свойству ReadOnly значение false.

  3. Дважды щелкните кнопку btnSetRawValue, чтобы создать в редакторе кода обработчик события Click.

  4. Добавьте следующий код, чтобы установить необработанное значение созданного счетчика и вывести его значение в тексте первой из меток:

    Private Sub btnSetRawValue_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnSetRawValue.Click
       PerformanceCounter2.RawValue = CLng(txtValue.Text)
       lblCounterValue.Text = PerformanceCounter2.NextValue().ToString()
    End Sub
    
    private void btnSetRawValue_Click(object sender, System.EventArgs e)
    {
       performanceCounter2.RawValue = long.Parse(txtValue.Text);
       lblCounterValue.Text = performanceCounter2.NextValue().ToString();
    

    }

Увеличение значения пользовательского счетчика на единицу и его отображение

  1. Дважды щелкните в конструкторе кнопку Увеличить значение пользовательского счетчика на 1, чтобы создать в редакторе кода обработчик события Click.

  2. Добавьте следующий код, чтобы увеличить пользовательский счетчик на единицу и вывести его значение в тексте первой из меток:

    Private Sub btnIncrement_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnIncrement.Click
       PerformanceCounter2.Increment()
       lblCounterValue.Text = PerformanceCounter2.NextValue().ToString()
    End Sub
    
    private void btnIncrement_Click(object sender, System.EventArgs e)
    {
       performanceCounter2.Increment();
       lblCounterValue.Text = performanceCounter2.NextValue().ToString();
    

    }

Уменьшение значения пользовательского счетчика и его отображение

  1. Дважды щелкните в конструкторе кнопку Уменьшить значение пользовательского счетчика на 1, чтобы создать в редакторе кода обработчик события Click.

  2. Добавьте следующий код, чтобы уменьшить значение счетчика на единицу и вывести его в тексте первой из меток:

    Private Sub btnDecrement_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnDecrement.Click
       PerformanceCounter2.Decrement()
       lblCounterValue.Text = PerformanceCounter2.NextValue().ToString()
    End Sub
    
    private void btnDecrement_Click(object sender, System.EventArgs e)
    {
       performanceCounter2.Decrement();
       lblCounterValue.Text = performanceCounter2.NextValue().ToString();
    

    }

Увеличение значения пользовательского счетчика на заданную пользователем величину

  1. Дважды щелкните в конструкторе кнопку Увеличить значение пользовательского счетчика, чтобы создать в редакторе кода обработчик события Click.

  2. Добавьте следующий код, чтобы увеличить значение счетчика на величину, введенную в текстовом поле, и вывести значение счетчика в тексте первой из меток:

    Private Sub btnIncrementBy_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnIncrementBy.Click
       PerformanceCounter2.IncrementBy(CLng(txtValue.Text))
       lblCounterValue.Text = PerformanceCounter2.NextValue().ToString()
    End Sub
    
    private void btnIncrementBy_Click(object sender, System.EventArgs e)
    {
       performanceCounter2.IncrementBy(long.Parse(txtValue.Text));
       lblCounterValue.Text = performanceCounter2.NextValue().ToString();
    }
    

Тестирование приложения

  1. Сохраните файлы.

  2. Нажмите клавишу F5, чтобы скомпилировать и запустить приложение.

  3. Для получения текущего значения счетчика категории "Процессор" нажмите кнопку Получить следующее значение системного счетчика. Поскольку считывание значения производится с помощью метода NextValue(), при первом вызове будет возвращено нулевое значение.

    Текущее значение счетчика должно появиться в тексте метки.

  4. Введите в текстовом поле значение 25 и нажмите кнопку Задать необработанное значение пользовательского счетчика.

    Текст метки должен обновиться, отразив тот факт, что необработанное значение теперь равно 25.

  5. Нажмите кнопку Увеличить значение пользовательского счетчика на 1.

    Значение в тексте метки должно увеличиться на 1.

  6. Нажмите кнопку Уменьшить значение пользовательского счетчика на 1.

    Значение в тексте метки должно уменьшиться на 1.

  7. Введите в текстовом поле значение 25 и нажмите кнопку Увеличить значение пользовательского счетчика.

    Значение в тексте метки должно увеличиться на 25.

    Кроме того, счетчик производительности можно просматривать с помощью средства Windows "Производительность".

Просмотр значения счетчика производительности с помощью средства Windows "Производительность"

  1. Откройте оснастку Производительность, входящую в состав консоли управления (MMC). Обратитесь к справке операционной системы, чтобы узнать, как открыть оснастку Производительность.

  2. Щелкните правой кнопкой мыши список счетчиков, расположенный под графиком производительности, и выберите команду Добавить счетчики.

  3. В списке Объект выберите MyNewCategory, а в списке счетчиков — MyNewCounter. В завершение нажмите Добавить.

  4. Для отображения значения счетчика нажмите на панели инструментов кнопку Просмотр отчета.

См. также

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

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

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

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

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