При написании продолжения рассказа о мониторинге Windows мы осознали, что описывать отдельно основные счетчики конечно можно, но вот читать это будет неинтересно, да и искать информацию не очень удобно. Поэтому детальные описания наиболее важных счетчиков Windows мы разместили на DevOps Wiki, а здесь предоставим сводную информацию со всеми необходимыми ссылками.
Счетчики будут разбиты по категориям. Мы решили остановиться на счетчиках процессора, памяти, ввода/вывода и сетевых. В каждой из этих категорий существуют основные счетчики, наблюдения за которыми помогают находить узкие места и источники проблем.
Начнем с процессора (ЦПУ). Все потоки выполнения программ потребляют ресурсы процессора. Эти потоки могут быть частью процессов пользовательского режима либо ядра операционной системы.
Доступные в Windows счётчики производительности позволяют определить, сколько времени обработки ЦПУ занимают потоки и другие исполняемые единицы работы. Эти метрики утилизации процессора позволяют определить, какие приложения «в ответе» за потребление ресурсов ЦПУ.
Процессор – основные счетчики:
- % Processor Time Counter (счётчик загруженности процессора): Показывает процент времени, затраченного процессором на выполнение непростаивающих потоков
- % Privileged Time Counter (счётчик процента работы в привилегированном режиме): Отражает процент времени, затраченного потоками процессов на исполнение кода в привилегированном режиме
- % Interrupt Time Counter (счётчик процента времени прерываний): Выводит время, которое процессор тратит на получение и обработку аппаратных прерываний за период измерений
- Processor Queue Length Counter (счётчик длины очереди процессора): Показывает количество потоков в очереди к процессору
- Context Switches Counter (счётчик контекстных переключений): Отражает суммарное по всем процессорам компьютера количество переключений с одного потока выполнения на другой
- System Up Time Counter (счётчик времени безотказной работы системы): Показывает индикатор общей доступности системы
От процессора переходим к памяти. Анализ проблем с памятью занятие интересное, поскольку Windows работает с физической и виртуальной памятью. Нехватка оперативной памяти часто проявляется косвенно – как проблемы с быстродействием дисковой подсистемы, когда чрезмерная подкачка страниц занимает слишком большой процент пропускной способности диска. Поэтому объёмы подкачки являются важным индикатором производительности памяти.
В 32-битных системах виртуальная память ограничена четырьмя Гигабайтами, разделёнными на 2 Гб общего адресного пространства и 2 Гб частного адресного пространства для каждого процесса. Однако большой объём физической памяти не помогает предотвратить нехватку виртуальной, и может даже привести к фатальным сбоям в случае утечек памяти, когда приложение не освобождает уже ненужные участки памяти.
Когда наблюдается нехватка оперативной памяти, зачастую важно определить, как используется выделенная физическая память, и посчитать количество резидентных страниц проблемного процесса, которые ещё называют его рабочим множеством (working set).
Память – основные счетчики:
- Available Bytes Counter (счётчик доступных байт): Подсчитывает объём физической памяти, доступной для процессов
- Working Set Counter (счётчик рабочего множества): Отражает количество резидентных страниц каждого процесса
- Pages/sec Counter (счётчик постраничного обмена в секунду): Показывает количество страниц, считанных с диска и записанных на него, с целью подкачки не найденных в памяти страниц
- Page Reads/sec Counter (счётчик чтения страниц в секунду): Указывает на то, что рабочее множество процесса слишком велико для физической памяти, и происходит постраничный обмен с диском
- Pool Nonpaged Bytes Counter (счётчик байт в невыгружаемом страничном пуле): Показывает размер адресного пространства системной памяти (физической памяти, используемой операционной системой) для объектов, которые не могут быть записаны на диск, но должны оставаться в физической памяти до тех пор, пока они используются
- Paged Pool Bytes Counter (счётчик байт в выгружаемом страничном пуле): Указывает на утечки памяти
- Paged Pool Failures Counter (счётчик отказов выгружаемого страничного пула): Отражает количество раз, когда в распределении из страничного пула было отказано
- Cache Bytes Counter (счётчик байт кэш-памяти): Показывает размер кэша статических файлов
- System Cache Resident Bytes Counter (счётчик резидентных байт системного кэша): Показывает количество резидентных страниц, выделенных в кэше файловой системы
- Committed Bytes Counter (счётчик выделенных байт виртуальной памяти): Отображает излишнюю подкачку, ведущую к медленному и нерегулярному времени откликов
От памяти переходим к дисковой подсистеме, и расскажем про наиболее важные счетчики Ввода/Вывода (I/O). Сперва попытаемся объяснить на пальцах основные понятия тем, кто незнаком с данной темой.
При помощи стека Диспетчера ввода/вывода Windows обслуживает операции логических и физических дисков. Логический диск – единая файловая система, которой присвоена уникальная буква. Физический же – внутреннее представление отдельного запоминающего устройства, все равно какого – SATA, RAID, SCSI, и т.д.
При использовании комплексных систем хранения информации, таких как контроллеры массива или RAID, ОС не видит напрямую аппаратных характеристик физического диска (количество дисков, их скорость, время доступа, скорость вращения шпинделя, битовая плотность, а также объём внутреннего буфера памяти). А тем временем эти параметры могут серьёзно повлиять на производительность. Продвинутые возможности, вроде очереди команд или буфера памяти, могут повысить быстродействие на 25-50%.
Следует отметить, что очень важно проактивно относиться к производительности диска, учитывая её тенденцию резко снижаться, особенно при подкачке страниц. Ну а теперь собственно краткий обзор наиболее важных метрик.
Основные счётчики Ввода/Вывода:
- Avg. Disk secs/transfer (среднее время обращения к диску): Указывает на потенциальные узкие места физического диска
- % Idle Time (% времени бездействия): Показатель использования физического диска
- Disk Transfers/sec (обращений к диску/сек): Помогает понять, является ли физический диск потенциальным узким местом
- Avg. Disk Queue Length (средняя длина очереди к диску): Указывает на потенциальные узкие места диска (только вместе с другими счётчиками)
- Split IO/sec (расщеплений операций ввода-вывода за секунду): Говорит о возможной фрагментации
- Free Megabytes Counter (счётчик свободных Мегабайт): Отображает объём незанятого пространства на логическом диске в Мб
А теперь перейдем к рассказу о наиболее важных сетевых счетчиках. И снова вначале коснемся основных понятий для тех, кто незнаком с данной темой.
Сетевой трафик в Windows замеряется как на самом низком уровне, аппаратном интерфейсе, так и на высоких уровнях сетевого протокола, например TCP/IP. Статистику на сетевых интерфейсах собирает программное обеспечение, встраиваемое на уровне драйверов сетевых устройств. Данное ПО подсчитывает количество отправленных и полученных пакетов. Причем объектов типа Сетевой Интерфейс обычно несколько, по одному на каждую установленную сетевую карту или чип. А счётчики высшего уровня, такие как Protocol_Object\Segments Received/sec и Protocol_Object\Segments Sent/sec, доступны через поддерживаемые протоколы – TCP, UDP, NetBEUI, NWLink IPX, NWLink NetBIOS, NWLink SPX, и др.
Основные сетевые счетчики:
- Bytes Total/sec Counter (общее число байт в секунду): Показатель общей пропускной способности
- Server Bytes Total/sec (сетевой трафик сервера в секунду): Отражает общую утилизацию сервера с сетевой точки зрения
- Datagrams/sec (количество датаграмм за секунду): Индикатор нагрузки по IP протоколу
- Connections Established (количество установленных соединений): Отражает количество успешных соединений по TCP протоколу
- Segments Received/sec (количество сегментов, полученных за секунду): Указывает количество полученных TCP сегментов данных
- % Interrupt Time (% времени прерываний): Показывает процент времени, которое процессор тратит на обслуживание прерываний от устройств (например, от сетевой карты)
Надеемся, что рассмотренные метрики помогут не потеряться в следующий раз, когда возникнет необходимость определить нагрузку, узкие места и источники проблем при работе с Windows. А в следующих заметках расскажем о мониторинге Unix – архитектуре и основных счетчиках.