Вычисление средних значений с помощью счетчиков производительности

У меня есть процесс обслуживания, и я хочу использовать счетчики производительности, чтобы опубликовать среднее время, необходимое для выполнения задач. Я использую счетчик AverageTimer32 для этого.

Он работает почти так, как я хочу, но не совсем: когда я увеличиваю счетчик, он будет кратковременно увеличиваться до значения, которое я ожидаю (смотря в Performance Monitor), но затем он падает до нуля.

Итак, счетчик равен нулю, я запускаю задачу, задача завершается, счетчик кратковременно подхватывает (до правильного значения), но затем он почти сразу возвращается к нулю.

Я использую счетчик AverageTimer32 с средним значением в качестве знаменателя. Я увеличиваю Среднюю Базу на 1 каждый раз, когда я запускаю задачу, а затем я увеличиваю AverageTimer32 на количество тиков, чтобы заполнить каждый раз, когда я заканчиваю задачу. Может кто-нибудь дать мне толчок?

Ответы

Ответ 1

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

Мне нужен средний показатель. Итак, я использовал счетчик производительности RawFraction.

Была одна проблема с этим методом: формула делит результат на 100, чтобы получить процент, и я хотел получить необработанное число (средние операции, выполненные за секунду).

Итак, я увеличил знаменатель фракции на 100 за каждую 1 операцию (компенсировал процентный расчет).

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