Azotirovanie.ru

Инженерные системы и решения
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Встроенные таймеры и счётчики AVR микроконтроллеров

Встроенные таймеры и счётчики AVR микроконтроллеров

Таймер микроконтроллера – это цифровой счётчик, осуществляющий подсчёт количества подаваемых на него импульсов.
Источником импульсов для таймера-счётчика могут служить: как тактовые импульсы от внутреннего генератора МК, так и импульсы, подаваемые непосредственно на вход таймера с внешнего источника.

В МК ATmega8 (Atmega16) есть три таймера: два 8-битных – Т0 и Т2, и один 16-битный – Т1. Счёт ведётся до 255 тактовых импульсов для 8-битных счётчиков и до 65535 импульсов – для 16-битного.
Далее, если не выполняется никаких программных действий, то происходит переполнение счётчика, он сбрасывается в 0 и всё повторяется бесконечное количество раз.

Для каждого таймера можно настроить делитель частоты тактовых импульсов, и, таким образом, заставить его тактироваться не только на основной частоте МК, но и на частотах, находящихся в пропорциях от 1:8 до 1:1024 по отношению к основной. Пропорция эта называется «prescaler» и прописывается в регистре TCCRx (Timer/Counter Control Register) посредством установки значений соответствующих битов.

На примере таймера-счётчика Т2, давайте посмотрим, как выглядит этот регистр TCCR2 и каково предназначение его битов. Итак:

1. Конфигурационный регистр TCCR2

Биты CS22, CS21, CS20 (Clock Select) – задают для таймера Т2 коэффициент предделителя.
Все возможные комбинации состояний этих битов описаны в таблице ниже:

CS22CS21CS20Описание
0 0 0 Источника тактирования нет, таймер остановлен
0 0 1 Тактовая частота МК
0 1 0 Тактовая частота МК/8
0 1 1 Тактовая частота МК/32
1 0 0 Тактовая частота МК/64
1 0 1 Тактовая частота МК/128
1 1 0 Тактовая частота МК/256
1 1 1 Тактовая частота МК/1024

Биты WGM21, WGM20 (Wave Generator Mode) – определяют режим работы таймера-счетчика Т2.
Всего их может быть четыре: нормальный режим (normal), сброс таймера при совпадении значения счётного регистра с содержимым регистра сравнения (CTC), два режима широтно-импульсной модуляции (FastPWM и Phase Correct PWM). Все возможные значения описаны в таблице ниже:

WGM21WGM20Режим работы таймера/счётчика
0 0 Нормальный режим счётчика (normal)
1 0 Сброс таймера при совпадении регистров OCR2 и TCNT2 (CTC)
0 1 ШИМ с коррекцией фазы (Phase Correct PWM)
1 1 Быстрая ШИМ (Fast PWM)

Биты COM21, COM20 (Compare Match Output Mode) – определяют поведение вывода OC2.
Если хоть один из этих битов установлен в 1, то вывод OC2 перестаёт функционировать как обычный вывод общего назначения и подключается к схеме сравнения таймера счётчика Т2. При этом его необходимо настроить как выход. Рассмотрим различные комбинации этих битов:

COM21COM20Режим работы вывода OC2
0 0 Вывод ОС2 отключён от таймера/счётчика
0 1 Состояние вывода меняется на противоположное при совпадении
TCNT2 и OCR2 (только в режимах Normal и CTC)
1 0 На OC2 устанавливается «0» при совпадении TCNT2 и OCR2,
и устанавливается «1» при сбросе счётчика
1 1 На OC2 устанавливается «1» при совпадении TCNT2 и OCR2,
и устанавливается «0» при сбросе счётчика

Бит регистра TCCR2 – FOC2 (Force Output Compare) предназначен для принудительной установки логического уровня на выходе OC2. Он работает только для режимов Normal и CTC. При установке бита FOC2 в единицу состояние выхода меняется в соответствии со значениями битов COM21 и COM20.

Конфигурацию регистра TCCR удобно производить в двоичном коде, т. к. каждый разряд этого кода равен соответствующему разряду регистра. Например, запись:

означает, что у счётчика выбран режим СТС со сбросом таймера при совпадении регистров OCR2 и TCNT2. Тактовая частота Т2 – это рабочая частота МК, делённая на 1024. Состояние вывода ОС2 при совпадении меняется на противоположное.
А запись:

означает, что счётчик установлен в режим Fast PWM (быстрая ШИМ). Делитель частоты отключён – таймер тикает с тактовой частотой МК. Выход ОС2 установлен в состояние логического 0.

Далее опишем по порядку остальные регистры, относящиеся ко всем трём таймерам ATmega8, 16.

2. Счётный регистр TCNT2

TCNT2 – это такой же 8-битный регистр, как и TCCR2, только все разряды в нём отведены для числа, соответствующего количеству импульсов, посчитанному счётчиком. Когда таймер-счётчик работает, то по каждому импульсу тактового сигнала значение TCNT2 изменяется на единицу. В зависимости от режима работы таймера, счётный регистр может или увеличиваться, или уменьшаться.
Содержимое регистра TCNT2 можно как читать, так изменять посредством записи в него. Запись в регистр используется при необходимости задать его начальное значение.
Когда таймер работает, изменять его содержимое TCNT2 не рекомендуется, так как это блокирует схему сравнения на один такт.

3. Регистр сравнения OCR2

OCR2 – это также 8-ми разрядный регистр. Его значение в каждом цикле сравнивается со значением счётного регистра TCNT2, и в случае совпадения, заставляет таймер выполнять какие-либо действия, как то: вызывать прерывание, менять состояние вывода OC2 и т. д. в полном соответствии с командами программного кода прошивки.
Значение OCR2 можно как читать, так и записывать.

Далее поговорим о прерываниях, источником которых являются счётчики-таймеры.
Напомню, что прерывание представляет собой определённое событие, при наступлении которого приостанавливается выполнение основной программы и вызывается функция, обрабатывающая данное прерывание.

4. Регистр флагов разрешения прерываний TIMSK

TIMSK – это общий регистр для всех трёх таймеров Atmega8, 16.

Таймер-счётчик Т2 может вызывать прерывания при следующих условиях:
1. при переполнении счётного регистра TCNT2,
2. при совпадении значения счётного регистра со значением регистра сравнения OCR2.
При этом в регистре TIMSK для таймера Т2 зарезервированы два бита: TOIE2 и OCIE2. Все остальные биты относятся к другим таймерам.

TOIE2OCIE2Разрешение прерываний
0 0 Все прерывания запрещены
0 1 Разрешает прерывание по событию совпадение
1 0 Разрешает прерывание по событию переполнение
1 1 Разрешает прерывания по обоим событиям

Необходимо отметить, что прерывания будут работать только тогда, когда в регистре состояния SREG разрешены общие прерывания. Это делается командой в начале программы:

sei(); //разрешение глобальных прерываний

Причём, в случае наступления прерывания, флаг глобального разрешения прерываний автоматически сбрасывается в 0, запрещая все прерывания, пока не произойдёт выход из обработчика прерывания.

Ещё один регистр, отвечающий за управление прерываниями – регистр TIFR.

5. Регистр флагов прерывания таймеров/счётчиков TIFR

TIFR также является общим регистром для всех трех таймеров-счётчиков Atmega8, 16.

TIFR – это регистр флагов. Когда срабатывает какое-то прерывание, то выскакивает статусный флаг, сигнализирующий о том, что произошло то или иное событие. Для таймера Т2 – этими событиями являются: переполнение счётного регистра TCNT2 или совпадение счётного регистра с регистром сравнения OCR2.
В эти моменты в регистре устанавливаются следующие флаги:
TOV2 – записывается 1 при переполнении счётного регистра,
OCF2 – записывается 1 при совпадении счётного регистра с регистром сравнения.
Если в эти моменты в регистре TIMSK разрешены прерывания, то микроконтроллер вызовет соответствующий обработчик.
Если прерывания запрещены, то флаг так и будет стоять до тех пор, пока программа не разрешит данный тип прерываний.
При входе в подпрограмму обработки прерывания, соответствующий прерыванию флаг регистра TIFR автоматически сбрасывается в состояние лог. 0.

Пример инициализации таймера-счётчика Т2, прописанный внутри функции main, может выглядеть следующим образом:

sei(); // Разрешение глобальных прерываний

TCCR2 = 0b00011101; /* 1. Режим СТС со сбросом таймера при совпадении регистров
OCR2 и TCNT2. 2. Тактовая частота Т2 – это рабочая частота МК, делённая на 1024.
3. Состояние вывода ОС2 при совпадении меняется на противоположное */

OCR2 = 112; // Сброс таймера произойдёт после того, как счётчик досчитает до 112

TIMSK |= (1 // В этот же момент произойдёт прерывание (по совпадению)

Следующая функция – это обработчик прерывания от таймера Т2, т. е. перечень действий, которые надо совершить в момент его возникновения. Описывается эта функция при помощи команд:

ISR (TIMER2_COMP_vect) // Если произошло прерывание по совпадению таймера Т2
<
// Действия, которые надо совершить
>

На следующих страницах рассмотрим примеры того, как можно реализовать генератор импульсов и ШИМ модулятор с использованием микроконтроллера Atmega8 (Atmega16).

Цикл со счётчиком for

Пожалуйста, приостановите работу AdBlock на этом сайте.

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

Пример: Равномерность случайных чисел

Числа, генерируемые функцией rand() , имеют равномерное распределение. Это значит, что если запускать функцию rand очень много раз и каждый раз записывать, какое число выпало, то различные числа выпадут примерно одинаковое число раз.
Например, если генерировать только числа 0 и 1, то через 100 запусков примерно 50 раз выпадет ноль и 50 раз единичка. Обратите внимание, что я говорю примерно. Может быть, например, 49 и 51, или 53 и 47.
Если рассматривать отношение этих чисел к общему количеству генераций, получим 49/100 и 51/100 или 53/100 и 47/100. Но чем больше экспериментов мы проведём, тем отношение количества единичек к количеству испытаний будет ближе к 1/2.
Проведите самостоятельно эксперимент с 10, 50 и 100 запусками. Это муторно и долго, если делать руками, но что поделать? В будущем мы напишем программу, чтобы проверить свойство равномерности распределения этих псевдослучайных чисел.

Давайте проведём подобный эксперимент. Пусть программа генерирует одно из трёх чисел: 0, 1 или 2. Вот, посмотрите на её код.

Если вам непонятно, как работает данная программа, то проработайте уроки «Приручаем случайность» и «Оператор выбора».
Программа получилась объемной, но довольно простой. При этом легко видеть, что одни и те же операции (генерация случайного числа и оператор выбора) повторяются буквально без изменений. Результат работы этой программы на рисунке ниже.

Пример работы программы Листинг 1

Рис.1 Пример работы программы Листинг 1

Как видите, пока что-то не очень похоже на то, что все цифры выпадают одинаковое количество раз. Запустите программу у себя, возможно, у вас получится более хороший результат. Ну, а мы продолжим. Давайте увеличим количество опытов до 100. Можно было бы, конечно, ещё 90 раз скопировать эту конструкцию или запустить программу ещё 9 раз и вручную складывать результаты, но это не дело. Лучше воспользуемся циклической конструкцией for .

Общий шаблон цикла for

Цикл for состоит из двух частей: заголовок цикла (первая строка) и тело цикла (вторая строка).

Тело цикла – это команда, которую необходимо выполнить несколько раз. Если необходимо выполнить несколько команд, а не одну, то можно воспользоваться составным оператором <> . Мы уже проделывали такой трюк, когда изучали условный оператор.

В нашем случае тело цикла for будет выглядеть так:

Так как в теле цикла две команды (присваивание, оператор выбора), то пришлось использовать составной оператор.

Разберём подробно заголовок цикла for . В нём, кроме ключевого слова for и скобок, имеется ещё три выражения.

Первое выражение – инициализация счетчика.

В этой части нам нужно завести переменную-счетчик и присвоить ей какое-нибудь начальное значение. Например:

Второе выражение – условие.

В этой части необходимо записать условное выражение, при котором должно выполняться тело цикла. Цикл for будет работать, пока условие истинно. Например:

И последняя третья часть – изменение счетчика.

Здесь записывается то, что должно происходить после каждого выполнения тела цикла. Обычно здесь пишут то, как должен измениться счётчик после каждой итерации. Одно повторение тела цикла в серьёзных книгах иногда называют итерацией .

Давайте перепишем нашу программу с использованием цикла for .

Гораздо понятнее и нагляднее, не так ли? Вот-вот. Опишем подробно алгоритм работы цикла for .

  1. Программа встречает ключевое слово for , а значит дальше идёт циклическая конструкция.
  2. Сначала создаётся переменная счетчик (выражение 1).
  3. Проверяется условие выполнение цикла (выражение 2).
  4. Если условие ЛОЖЬ , то программа выходит из цикла for и продолжает свое выполнение.
  5. Если условие ИСТИНА , то выполняется тело цикла.
  6. Когда тело цикла выполнится, программа возвращается к заголовку и выполняет инструкции из третьей части заголовка. Изменяется значение переменной-счетчика (выражение 3).
  7. Возвращаемся к пункту три.

А теперь то же самое для нашей программы. Встречаем цикл for .

  • Инициализируем переменную счётчик i = 0 ;
  • Проверяем условие i < 100 . Т.к. i = 0 , то условие ИСТИНА ;
  • Выполняем тело цикла. Генерируем число от 0 до 2. В операторе switch определяем, какое число было сгенерировано, и увеличиваем соответствующий счётчик;
  • Т.к. тело цикла закончено, то выполняем Выражение 3. Теперь i = 1 .
  • Возвращаемся к условию;
  • Проверяем условие i < 100 . Т.к. i = 1 , то условие ИСТИНА
  • Выполняем тело цикла. Генерируем число от 0 до 2. В операторе switch определяем, какое число было сгенерировано, и увеличиваем соответствующий счётчик;
  • Изменяем счётчик. Теперь i = 2 . Возвращаемся к условию.

И так далее, пока i не станет равным 100 . В этом случае при проверке условия получим ЛОЖЬ . Выполнение цикла прекратится. Программа продолжит выполнять инструкции, расположенные за циклом.

Давайте посмотрим ещё на один пример.

Напишем программу, которая выводит на экран сумму натуральных чисел из промежутка [A;B] . Числа A и B (B>A) вводятся пользователем.

Все неясные моменты я постарался отразить в комментариях к программе. Если возникнут вопросы, то задавайте их в комментариях к уроку.

Практика

Решите предложенные задачи. Для удобства работы сразу переходите в полноэкранный режим

Введение

Таймер-счетчик является одним из самых ходовых ресурсов AVR микроконтроллера. Его основное назначение — отсчитывать заданные временные интервалы. Кроме того, таймеры-счетчики могут выполнять ряд дополнительных функций, как то — формирование ШИМ сигналов, подсчет длительности и количества входящих импульсов. Для этого существуют специальные режимы работы таймера-счетчика.

В зависимости от модели микроконтроллера количество таймеров и набор их функций может отличаться. Например, у микроконтроллера Atmega16 три таймера-счетчика — два 8-ми разрядных таймера-счетчика Т0 и Т2, и один 16-ти разрядный — Т1. В этой статье, на примере ATmega16, мы разберем как использовать таймер-счетчик Т0.

Используемые выводы

Таймер-счетчик Т0 использует два вывода микроконтроллера ATmega16. Вывод T0 (PB0) — это вход внешнего тактового сигнала. Он может применяться, например, для подсчета импульсов. Вывод OC0 (PB3) — это выход схемы сравнения таймера-счетчика. На этом выводе с помощью таймера может формировать меандр или ШИМ сигнал. Также он может просто менять свое состояние при срабатывании схемы сравнения, но об этом поговорим позже.

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

Регистры таймера-счетчика Т0

Хоть это и скучно, но регистры — это то, без чего невозможно программировать микроконтроллеры, конечно, если вы не сидите плотно на Arduino. Так вот, таймер Т0 имеет в своем составе три регистра:

— счетный регистр TCNT0,
— регистр сравнения OCR0,
— конфигурационный регистр TCCR0.

Кроме того, есть еще три регистра, относящиеся ко всем трем таймерам ATmega16:

— конфигурационный регистр TIMSK,
— статусный регистр TIFR.
— регистр специальных функций SFIOR

Начнем с самого простого.

Это 8-ми разрядный счетный регистр. Когда таймер работает, по каждому импульсу тактового сигнала значение TCNT0 изменяется на единицу. В зависимости от режима работы таймера, счетный регистр может или увеличиваться, или уменьшаться.
Регистр TCNT0 можно как читать, так и записывать. Последнее используется когда требуется задать его начальное значение. Когда таймер работает, изменять его содержимое TCNT0 не рекомендуется, так как это блокирует схему сравнения на один такт.

OCR0

Это 8-ми разрядный регистр сравнения. Его значение постоянно сравнивается со счетным регистром TCNT0, и в случае совпадения таймер может выполнять какие-то действия — вызывать прерывание, менять состояние вывода OC0 и т.д. в зависимости от режима работы.

Значение OCR0 можно как читать, так и записывать.

TCCR0 (Timer/Counter Control Register)



Это конфигурационный регистр таймера-счетчика Т0, он определяет источник тактирования таймера, коэффициент предделителя, режим работы таймера-счетчика Т0 и поведение вывода OC0. По сути, самый важный регистр.

Биты CS02, CS01, CS00 (Clock Select) — определяют источник тактовой частоты для таймера Т0 и задают коэффициент предделителя. Все возможные состояния описаны в таблице ниже.

Как видите, таймер-счетчик может быть остановлен, может тактироваться от внутренней частоты и также может тактироваться от сигнала на выводе Т0.

Биты WGM10, WGM00 (Wave Generator Mode) — определяют режим работы таймера-счетчика Т0. Всего их может быть четыре — нормальный режим (normal), сброс таймера при совпадении (CTC), и два режима широтно-импульсной модуляции (FastPWM и Phase Correct PWM). Все возможные значения описаны в таблице ниже.

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

Биты COM01, COM00 (Compare Match Output Mode) — определяют поведение вывода OC0. Если хоть один из этих битов установлен в 1, то вывод OC0 перестает функционировать как обычный вывод общего назначения и подключается к схеме сравнения таймера счетчика Т0. Однако при этом он должен быть еще настроен как выход.
Поведение вывода OC0 зависит от режима работы таймера-счетчика Т0. В режимах normal и СTC вывод OC0 ведет себя одинаково, а вот в режимах широтно-импульсной модуляции его поведение отличается. Не будем сейчас забивать себе голову всеми этими вариантами и разбирать таблицы для каждого режима, оставим это на практическую часть.

И последний бит регистра TCCR0 — это бит FOC0 (Force Output Compare). Этот бит предназначен для принудительного изменения состояния вывода OC0. Он работает только для режимов Normal и CTC. При установки бита FOC0 в единицу состояние вывода меняется соответственно значениям битов COM01, COM00. FOC0 бит не вызывает прерывания и не сбрасывает таймер в CTC режиме.

TIMSK (Timer/Counter Interrupt Mask Register)


Общий регистр для всех трех таймеров ATmega16, он содержит флаги разрешения прерываний. Таймер Т0 может вызывать прерывания при переполнении счетного регистра TCNT0 и при совпадении счетного регистра с регистром сравнения OCR0. Соответственно для таймера Т0 в регистре TIMSK зарезервированы два бита — это TOIE0 и OCIE0. Остальные биты относятся к другим таймерам.

TOIE0 — 0-е значение бита запрещает прерывание по событию переполнение, 1 — разрешает.
OCIE0 — 0-е значение запрещает прерывания по событию совпадение, а 1 разрешает.

Естественно прерывания будут вызываться, только если установлен бит глобального разрешения прерываний — бит I регистра SREG.

TIFR (Timer/Counter0 Interrupt Flag Register)


Общий для всех трех таймеров-счетчиков регистр. Содержит статусные флаги, которые устанавливаются при возникновении событий. Для таймера Т0 — это переполнение счетного регистра TCNT0 и совпадение счетного регистра с регистром сравнения OCR0.

Если в эти моменты в регистре TIMSK разрешены прерывания и установлен бит I, то микроконтроллер вызовет соответствующий обработчик.
Флаги автоматически очищаются при запуске обработчика прерывания. Также это можно сделать программно, записав 1 в соответствующий флаг.

TOV0 — устанавливается в 1 при переполнении счетного регистра.
OCF0 — устанавливается в 1 при совпадении счетного регистра с регистром сравнения

SFIOR (Special Function IO Register)

Начинающему про этот регистр в принципе можно и не знать, один из его разрядов сбросывает 10-ти разрядный двоичный счетчик, который делит входную частоту для таймера Т0 и таймера Т1.

Сброс осуществляется при установке бита PSR10 (Prescaler Reset Timer/Counter1 и Timer/Counter0) в единицу.

Заключение

Нудная часть закончена. Далее разберем как настроить таймер на определенную частоту, как таймер ведет себя в разных режимах, как генерировать ШИМ сигнал.

Системный монитор Windows (Performance Monitor): сборщики данных загруженности оборудования системы

Ранее я уже писал о работе и настройке системного монитора Windows (Performance Monitor). В данной статье продолжим знакомиться с этим замечательным инструментом. В частности, поговорим о том как создавать сборщики данных загруженности оборудования системы, а затем просматривать и анализировать полученную информацию в системном мониторе.

0. Оглавление

1. Запуск системного монитора

Итак, запускаем Системный монитор Windows (Windows Performance Monitor). Во всех версиях Windows Server сделать это проще всего выполнив команду perfmon (Win+R — «perfmon» — «ОК»)

performance-monitor_02

2. Добавление группы сборщиков данных

Теперь добавим новую группу сборщиков данных.

Но прежде всего, необходимо убедиться, что пользователь, под которым вы работаете, является членом группы «Пользователи журналов производительности» (Performance Log Users) или группы «Администраторы» (Administrators) (или аналогичной).

Для добавления новой группы сборщиков данных, в запустившемся Системном мониторе Windows в дереве консоли слева раскрываем вкладку «Группы сборщиков данных» (Data Collector Set), кликнем правой кнопкой мыши по группе «Особые» (User Defined) и в контекстном меню выберем пункт «Создать» (New) — «Группа сборщиков данных» (Data Collector Set).

sborshhiki-dannyx-01

Запуститься мастер создания группы сборщиков данных. На первой странице мастера вводим имя группы сборщиков, выбираем пункт «Создать вручную (для опытных)» (Create manually (Advenced)) и нажимаем «Далее» (Next).

sborshhiki-dannyx-02

Выбираем тип данных «Создать журналы данных» (Create data logs), ставим флаг «Счетчик производительности» (Performance counter) и снова жмем «Далее» (Next).

sborshhiki-dannyx-03

На следующей странице мастера, необходимо выбрать счетчики производительности по которым будет идти запись в журнал. Нажимаем кнопку «Добавить» (Add), после чего откроется знакомое по предыдущей статье окно добавления счетчиков. Счетчиков очень много. Для удобства все счетчики сгруппированы по типу оборудования или ПО. Обратите внимание, что можно добавлять как счетчики текущего компьютера, так и компьютеров сети (при наличии соответствующих прав).

Для некоторых счетчиков возможно выбрать конкретный экземпляр объекта. Например, при добавлении счетчика «Средняя длина очереди диска» (Avg. Disk Queue Length) можно выбрать диск, для которого будет собираться статистика.

Выбрав необходимый счетчик (или конкретный экземпляр объекта для счетчика) следует перенести его в таблицу «Добавленные счетчики» (Added Counters) с помощью кнопки «Добавить» (Add). Добавив все необходимые счетчики, нажимаем «ОК».

sborshhiki-dannyx-04

После чего все выбранные счетчики перенесутся в список счетчиков создаваемой группы сборщиков данных. Устанавливаем интервал сбора данных (Sample interval) (рекомендуется 15 сек.) и нажимаем «Далее» (Next).

sborshhiki-dannyx-05

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

Однако если вы не Администратор, вам, скорее всего, не хватит прав на каталог C:PerfLogs. И в этом случае, следует выбрать папку для логов там, куда гарантированно есть право на запись.

Определившись с корневой папкой для хранения файлов журнала, жмем «Далее» (Next).

sborshhiki-dannyx-06

На последней странице мастера также можно выбрать пользователя Windows из под которого будет вестись замер производительности. Сменив пользователя (или оставив значение по умолчанию) устанавливаем переключатель, отвечающий за последующие действия программы в значение «Сохранить и закрыть» (Save and close) и нажимаем «Готово» (Finish) для завершения работы мастера.

sborshhiki-dannyx-07

После чего в дереве консоли в группе «Особые» (User defined) увидим нашу только что созданную группу сборщиков данных. Для того, чтобы сборщик данных начал запись в показателей счетчиков в журнал, необходимо кликнуть по нему правой кнопкой мыши и в контекстном меню выбрать пункт «Пуск» (Start) или нажать соответствующую кнопку на панели задач оснастки.

sborshhiki-dannyx-08

Если все настроено правильно, и сборщик начал запись в журнал, иконка группы сборщика данных сменится на иконку со значком «Play». Даже если завершить сеанс пользователя, сборщик все равно продолжит свою работу.

sborshhiki-dannyx-09

При текущих настройках сборщик будет работать до тех пор, пока не произойдет перезагрузка сервера, или его не остановят вручную. Для этого достаточно в контекстном меню группы сборщиков данных выбрать пункт «Стоп» (Stop) или нажать соответствующую кнопку на панели задач.

sborshhiki-dannyx-10

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

sborshhiki-dannyx-11

Просматривать данный журнал производительности можно в системном мониторе, выбрав нужный файл в качестве источника в свойствах системного монитора как показано на рисунке ниже (можно добавить сразу несколько файлов, в этом случае данные из всех замеров будут выведены на одном графике).

sborshhiki-dannyx-13

Но намного удобнее это делать, найдя нужный журнал в дереве консоли, развернув вкладки «Отчеты» (Reports) — «Особые» (User Defined). Здесь для каждой созданной группы сборщиков данных хранятся сведения о файлах журналов замера производительности. Чтобы просмотреть данные журнала достаточно просто выбрать его в дереве.

sborshhiki-dannyx-12

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

3. Запуск сборщика данных по расписанию

Также есть возможность настроить запуск сборщика данных по расписанию. Для этого следует кликнуть правой кнопкой мыши по группе сборщиков данных, для которой необходимо настроить расписание, и в контекстном меню выбрать пункт «Свойства» (Properties).

sborshhiki-dannyx-16

В открывшемся окне свойств сборщика данных доступно для изменения множество параметров сборщика. В частности, на вкладке «Расписание» (Schedile) можно настроить несколько триггеров, по которым будет запускать замер производительности. Например, на картинке ниже, установлено расписание, при котором сборщик данных будет запускаться каждый будний день в 10:00 в течении всего Июня 2015 года.

sborshhiki-dannyx-15

Осталось только определить время остановки записи работы счетчиков. Сделать это можно на вкладке «Условие остановки» (Stop Condition). На приведенном ниже рисунке сборщик будет работать в течении одного часа.

sborshhiki-dannyx-17

Дожидаемся назначенного времени и видим, что файл журнала успешно сформировался и доступен для анализа в дереве консоли оснастки «Производительность» (Performance).

sborshhiki-dannyx-18

4. Автоматический перезапуск сборщика данных

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

Прежде всего, для удобства хранения фалов журнала, поменяем формат имени папки (Subdirectory name format), в которой будет храниться файл с данными замера производительности. Сделать этом можно вызвав окно свойств текущего сборщика данных и перейдя на вкладку «Папка» (Directiry). Здесь с помощью встроенной подсказки можно установить шаблон создаваемых папок. Установим имя, соответствующее полному времени начала работы группы сборщика данных, т. е. в формате «yyyyMMddHHmmss».

sborshhiki-dannyx-20

Затем на вкладке «Условие остановки» (Stop Condition) установим флаг «Перезапускать группу сборщиков данных при достижении предела.» (Restart the data collector set at limits) и установим длительность (Duration) работы счетчика, например 1 час, после чего сохраняем изменения с помощью кнопки «ОК».

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

sborshhiki-dannyx-22

5. Работа с группами сборщиков данных из командной строки

Работать с группами сборщиков данных можно как и из оснастки «Производительность» (Performance), так и из командной строки с помощью программы logman.exe. Синтаксис и примеры работы данного оператора можно получить выполнив команду

sborshhiki-dannyx-14

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

Например, bat-файл, создающий группу сборщиков данных аналогичную описанной в данной статье выше, будет содержать код (bat-файлы удобно писать с помощью программы Notepad++):

Названия счетчиков заключаются в кавычки и разделяются пробелом. Имена счетчиков можно писать как в англоязычном варианте, так и на русском языке (но тогда bat-файл будет работать только в русскоязычных версиях Windows). Если в названии счетчика встречается знак %, его необходимо заменить знаками %% (двойной процент).

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

sborshhiki-dannyx-19

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

Смотрите также:

Во всех версиях Windows присутствует универсальный инструмент для сбора информации по загруженности оборудования системы — Системный монитор Windows (Windows Performance Monitor). Он представляет собой оснастку консоли управления (MMC), с помощью которой пользователь…

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

На нашем сайте уже раннее рассматривался вариант установки изначально русифицированной редакции Windows 8.1. Англоязычные редакции, к примеру, ознакомительная версия Windows 8.1 Корпоративная на сайте Центра пробного ПО от компании Microsoft, дистрибутив…

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

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

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

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

Performance Monitor

Основным инструментом для управления счетчиками производительности в Windows является оснастка Монитор производительности (Performance Monitor), в более ранних версиях Windows известная как Системный монитор. Performance Monitor имеет несколько режимов отображения и позволяет выводить показания счетчиков производительности в режиме реального времени, а также сохранять данные в лог-файлы для последующего изучения.

Найти Performance Monitor можно в меню Пуск (стартовый экран в Server 2012) в разделе Administrative tools, либо нажав Win+R и в окне «Run» выполнить команду perfmon.msc. Стоит иметь в виду, что не все пользователи имеют права на использование этой оснастки. Кроме членов группы Administrators, которые имеют полные права и могут пользоваться всеми ее возможностями, есть еще две группы:

• Пользователи системного монитора (Performance Monitor Users) — могут просматривать (локально или удаленно) данные монитора производительности и изменять свойства отображения в реальном времени. Не имеют прав на создание и изменение групп сборщиков данных (Data Collector Set);
• Пользователи журналов производительности (Performance Log Users) — имеют все права предыдущей группы, а также могут создавать и изменять группы сборщиков данных.

Ну а обычные пользователи, входящие в группу Users, могут только открывать лог-файлы для просмотра в мониторе производительности.

Важно. В соответствием с требованием инструментария управления Windows (WMI) группе Performance Log Users необходимо предоставить право входа в систему в качестве пакетного задания. Для этого надо открыть оснастку локальной политики безопасности (secpol.msc), в разделе «Local policiesUser Rights Assignment» найти параметр Log on as batch job и добавить в список группу Performance Log Users.

разрешение на вход в качестве пакетного задания

Добавление счетчиков

Итак, первое что мы делаем, открыв Performance Monitor, это добавляем в окно мониторинга необходимые нам счетчики. По умолчанию в окне уже отображается один счетчик, показывающий общую загрузку процессора. Удалить ненужный счетчик можно, выделив его и нажав на красный крестик на панели инструментов, либо клавишей Delete. Для добавления счетчиков жмем зеленую кнопку либо Ctrl+N.

Performance monitor

Открывается окно добавления счетчиков. В поле «Select counters from computer» задаем имя или IP-адрес компьютера, за которым будет вестись наблюдение. Кстати, Performance Monitor может отображать в одном окне счетчики с разных компьютеров.

Затем выбираем счетчики производительности из списка. Все счетчики объединены в группы, как правило содержащие в своем названии имя объекта производительности. Например, для мониторинга сетевой активности открываем группу Network Interface и выбираем счетчики, показывающие объем получаемого и передаваемого сетевого трафика, общий объем трафика и текущую пропускную способность.

Если вы сомневаетесь в назначении какого либо счетчика, то есть возможность посмотреть его описание. Для этого надо отметить чекбокс «Show description» в левом нижнем углу. Описание не очень подробное, но достаточно информативное.

Примечание. Количество счетчиков производительности довольно велико и зависит от версии операционной системы и установленых серверных ролей и компонентов. Так, например, в Windows Server 2012 добавлено большое количество счетчиков, предназначеных для мониторинга виртуальных машин. Кроме того, некоторые серверные продукты, такие как Exchange или SQL Server добавляют в систему собственные счетчики.

Выбрав объект мониторинга и выделив нужные счетчики, в поле «Instances of selected оbject» выбираем экземпляр (Instance) объекта. Так выбрав в качестве объекта сетевые интерфейсы, здесь мы указываем, за каким именно необходимо наблюдать. Можно выбрать один или несколько экземпляров, выбрав All Instance мы выведем данные для каждого экземпляра отдельно , а значение _Total выведет усредненное значение по всем экземплярам объекта.

Далее кнопкой «Add»добавляем выбранные счетчики в окно справа и сохраняем изменения кнопкой OK.

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

Вот так выглядит окно монитора производительности после добавления счетчиков. По умолчанию значения счетчиков производительности выводятся в виде линейного графика. Выбрав конкретный счетчик, можно посмотреть в панели текущее (last), минимальное (minimum), максимальное (maximum) и среднее (average) значения за указанный период времени.

Если одновременно используется большое число счетчиков, то следить за каждым из них может быть затруднительно. Поэтому при необходимости лишние счетчики лучше скрыть, для чего достаточно снять флажок в столбце Show.

Нажав соответствующую кнопку на панели инструментов, можно выбрать режим отображения в виде гистограммы (Histogram bar) или в виде отчета (Report). Также между режимами можно переключаться сочетанием клавиш Ctrl+G.

изменение режима просмотра

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

просмотр данных в режиме отчета

Как вариант, можно выделить конкретный счетчик, так чтобы он отражался более жирной линией. Для этого выбираем нужный счетчик и жмем на кнопку Highlight, расположенную в панели инструментов. Также для выделения можно воспользоваться сочетанием клавиш Ctrl+H.

выделение одного счетчика

Настройка Performance Monitor

Performance Monitor имеет множество настроек, предназначенных для наилучшего отображения данных. Открыть диалоговое окно настроек монитора производительности можно, кликнув на нем правой клавишей мышки и выбрав пункт Properties, либо нажав на неприметную кнопку в панели инструментов, либо нажав Ctrl+Q.

переход к настройкам отображения

На вкладке General можно:

• Display Elements — удалитьдобавить элементы, отображаемые в окне Performance Monitor;
• Report and Histogramm Data — изменить значения, отображаемые в режиме отчета и гистограммы. По умолчанию в них отображаются текущие значения счетчиков. Можно указать минимальное, максимальное или среднее значение, при этом отображаемые данные будут каждый раз пересчитываться;
• Sample Automaticaly — автоматический съем данных. По дефолту выборка данных производится автоматически, с заданным интервалом. Убрав галку, мы тем самым включим ручной режим, в котором снятие данных осуществляется кнопкой Update Data на панели инструментов, или сочетанием клавиш Ctrl+U. Также переключаться с ручного режима на автоматический и обратно можно клавишами Ctrl+F;
• Graph elements — элементы диаграммы. В поле Sample Every задается интервал обновления данных в автоматическом режиме, а в поле Duration — временной отрезок, отображаемый в окне Performance Monitor. По умолчанию данные обновляются каждую секунду, а отображаемый интервал составляет 100 секунд. Для более-менее длительного наблюдения эти значения желательно увеличить.

Настройки, вкладка General

На вкладке Source (Источник) мы указываем, откуда брать данные:

• Current activity — текущая активность, выводится в окне Performance Monitor по умолчанию;
• Log files — здесь можно указать путь к сохраненному ранее файлу журнала;
• Database — использовать в качестве источника базу данных SQL. Performance Monitor позволяет записывать и извлекать данные о производительности в базу данных, конечно при наличии SQL сервера.

Настройки, вкладка Source

На вкладке Data можно отредактировать список счетчиков, а также изменить визуальные параметры отображения каждого счетчика — цвет (Color), масштаб (Scale), ширину линии (Width) и ее стиль (Style).

Настройки, вкладка Data

На вкладке Graph изменяем отображение графика:

• View — задаем режим отображения: график, гистограмма или отчет;
• Scroll style — тип прокрутки, указывающий направление прокрутки для линейного графика. Выбрав Wrap (Зацикливание) график будет прокручиваться слева направо, Scroll (Продвижение) — в обратном направлении;
• Title — название графика, отображаемое под панелью инструментов;
• Vertical axis — при помощи этого параметра можно дать название вертикальной оси координат;
• Show — включает отображение вертикальной и горизонтальной сетки и подписи со значениями для осей координат;
• Vertical scale — диапазон значений вертикальной шкалы. Здесь устанавливаем минимальное и максимальное значение, которые будут отображаться на графике.

Настройки, вкладка Graph

Ну и на вкладке Appearance настраивается цветовое оформление и используемый шрифт.

Настройки, вкладка Appearance

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

Иногда может потребоваться сохранить полученные данные, например для предоставления отчета или для проведения дальнейшего анализа. Performance Monitor позволяет экспортировать полученные данные в файл. Для экспорта надо кликнуть правой клавишей мыши в окне и в открывшемся меню выбрать пункт «Save Settings As». По умолчанию отчет сохраняется в формате HTML, и его можно открыть в любом браузере.

Также можно выбрать для сохранения формат файла с расширением .tsv — файл с разделителями — знаками табуляции. Этот формат может использоваться для экспорта данных в электронные таблицы. А выбрав в контекстном меню пункт «Save Image As» можно сохранить содержимое экрана в виде изображения в формате GIF.

Сохранение данных в файл

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

работа с данными в HTML

PowerShell

Значения счетчиков производительности можно посмотреть и из консоли PowerShell, где для этого есть специальный командлет Get-Counter . Хотя PowerShell имеет гораздо меньше возможностей для отображения счетчиков производительности, чем Performance Monitor, но зато может использоваться в режиме установки Server Core, при полном отсутствии графического интерфейса.

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

(Get-Counter -ListSet Processor).counter

Затем выбираем нужный и выводим его значение:

Get-Counter -Counter ″Processor(_total)% Processor Time″ -SampleInterval 10 -MaxSamples 2

— В скобках указывается экземпляр счетчика (Instance), в данном примере это ядра процессора. Можно указать номер конкретного экземпляра, либо поставить звездочку (*), тогда будет выведена информация по каждому экземпляру, а указав параметр (_total), мы получим суммарную информацию по всем экземплярам.
— Параметр -SampleInterval указывает периодичность снятия данных, а -MaxSamples — количество попыток. Так в примере данные снимаются 2 раза с интервалом в 10 секунд. Если вместо этих параметров указать -Continuous , то данные будут сниматься непрерывно, пока вы не нажмете Ctrl+C;
При необходимости можно вывести значения с нескольких счетчиков, указав их через запятую.

Просмотр счетчиков с помощью PowerShell

Заключение

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

голоса
Рейтинг статьи
Читайте так же:
Счетчик посещений для блога страница
Ссылка на основную публикацию
Adblock
detector