Когда необходимо добиться максимального быстродействия и стабильности работы Windows Server, следует обратить внимание на встроенные счетчики производительности и средства анализа. Счетчики производительности и средства анализа позволяют найти слабые места и определить, что можно улучшить с помощью мониторинга текущих показателей производительности системы и средств накопления данных (журналов) о загруженности и производительности сервера. Для верной интерпретации полученных фактов необходимо понимать взаимосвязи аппаратных компонентов, влияющих на производительность сервера (Windows или Linux), и правильно использовать имеющиеся инструменты.
Главные аппаратные компоненты, которые можно модернизировать с целью повышения производительности сервера, это процессор, память, дисковая подсистема и сетевой интерфейс. Первые три компонента являются внутренними для сервера, а четвертый, сетевой интерфейс, обеспечивает взаимодействие сервера с внешним миром. Внутренняя производительность сервера определяет, будет ли сетевой интерфейс задействован на полную мощность, а от сетевого интерфейса зависит, смогут ли клиенты воспользоваться общей производительностью системы. Все четыре компонента играют важную роль и являются взаимозависимыми.
В данной статье мы рассмотрим влияние, оказываемое этими компонентами на производительность, и процесс их мониторинга средствами Windows. Но сначала нужно определить взаимосвязь этих компонентов. Затем я расскажу о том, какие счетчики производительности имеются в Windows и как они соотносятся с аппаратными компонентами. В заключение будет показано, как мониторинг производительности позволяет повысить производительность системы.
Системный подход и определение базового уровня
При мониторинге и анализе производительности серверов Windows важно использовать системный подход и учитывать взаимное влияние аппаратных компонентов. Например, при высокой загрузке процессора не следует автоматически считать, что проблема исключительно в процессоре. Нужно учесть влияние, оказываемое памятью и загрузкой жесткого диска. Возможно, система использует слишком большой объем виртуальной памяти? В этом случае высокая загрузка процессора может оказаться симптомом нехватки оперативной памяти, а не недостаточной вычислительной мощности процессора.
Анализ работы сотен серверов Windows позволяет прийти к общему заключению: использование самых быстрых процессоров далеко не всегда решает проблемы производительности. Конечно, заманчиво для решения проблемы производительности добавить процессорной мощи, но вспомним правило из реальной жизни: если потерял дорогу в городе, то чем быстрее едешь дальше — тем вернее потеряешься еще больше. Для серверов это означает, что процессор просто быстрее отрабатывает больше циклов ожидания, пока не завершится прохождение действительно узкого места, вызвавшего задержку обработки задания.
При анализе производительности сервера Windows следует сопоставлять работу всех четырех основных компонентов одновременно. Системный подход подсказывает, что надо рассматривать систему в целом, а не отдельные компоненты. Благодаря применению системного подхода действительная причина проблемы будет обнаружена быстрее.
Перед тем как перейти к исследованию счетчиков производительности, следует пояснить необходимость выбора базового уровня. Базовый уровень производительности представляет собой такой уровень быстродействия сервера, когда система работает с нагрузкой, и операции выполняются с приемлемой для решения задачи скоростью. Базовый уровень производительности определяется при мониторинге и сохранении журналов производительности сервера во время нормальной работы сервера. Я предпочитаю отслеживать уровень производительности в течение всего нормального рабочего дня организации, например с 9:00 до 18:00. После того как журналы производительности созданы, можно открыть инструментарий анализа производительности системы и просмотреть моменты наибольшей загруженности системы. Если производительность сервера в эти моменты была приемлемой, можно сделать вывод, что сервер обладает достаточной производительностью для решаемого класса задач.
С течением времени в большинстве организаций нагрузка на сервер возрастает. Пользователи осваивают систему, начинают работать более активно, используют новые функции, поэтому требования к быстродействию сервера возрастают. Кроме того, обычно к системе подключаются еще и новые пользователи. Все эти факторы могут привести к тому, что производительность сервера со временем может оказаться недостаточной. В таком случае следует собрать новые журналы счетчиков производительности и сравнить их с исходным базовым уровнем, чтобы определить проблемные области. При дальнейшем обсуждении необходимо иметь в виду, что следует рассматривать показания счетчиков производительности в сравнении с базовым уровнем, а не просто как результаты текущих измерений.
Счетчик производительности центрального процессора
Средство мониторинга надежности и производительности Reliability and Performance Monitor в Windows Server 2008 и инструмент для измерения производительности системы System Performance в Windows Server 2003 R2 предоставляют администраторам важные счетчики производительности, отражающие работу главных компонентов сервера. Средство измерения производительности системы часто называют системным монитором, хотя в заголовке его окна написано Performance. Основные счетчики производительности центрального процессора предоставляются объектами Processor и Process. Наиболее информативными являются счетчики процента загруженности процессора, % Processor Time, процента работы в пользовательском режиме, % User Time, и процента работы в привилегированном режиме, % Privileged Time. Предоставляемые объектом Processor, эти счетчики позволяют отслеживать как загрузку отдельных процессоров сервера, так и общую загрузку всех процессоров (см. экран 1). Эти же счетчики доступны через объект Process, и в этом случае они позволяют определить использование процессоров отдельными или всеми процессами, выполняемыми на сервере.
Если вы видите, что счетчик процента загруженности процессора для объекта Processor имеет высокое значение, вы можете с помощью объекта Process настроить мониторинг для каждого отдельного процесса. Это позволит определить, какие из процессов требуют больше всего процессорного времени. Возможно, некоторые процессы могут быть перенесены на другие серверы, а могут даже обнаружиться лишние процессы, которые можно остановить без ущерба для работы сервера. Просто удивительно, как много бывает на сервере Windows неиспользуемых процессов, которые могут замедлять работу сервера, поскольку ядро Windows вынуждено тратить часть ресурсов на управление этими процессами. Примерами таких процессов являются неиспользуемые приложения автозапуска и службы и дополнительные компоненты приложений, выполняемые в отдельных процессах.
Счетчик процента загруженности процессора включает суммарное время выполнения задач в пользовательском режиме и режиме ядра операционной системы. С технической точки зрения это время, в течение которого не выполняется процесс бездействия системы System Idle. Процесс бездействия системы выполняется все время, когда не выполняются другие процессы, использующие процессорное время. По моим наблюдениям, загрузка сервера может считаться высокой, если среднее значение счетчика процента загруженности процессора превышает 65–70%.
Счетчики процента работы в пользовательском режиме (% User Time) и процента работы в привилегированном режиме (% Privileged Time) позволяют по отдельности отслеживать время процессов в пользовательском режиме и режиме ядра. Они могут помочь определить, где находится источник проблем — в пользовательских приложениях или в самой операционной системе. При этом необходимо учитывать архитектуру Windows. Большинство операций выполняется в режиме ядра, поэтому часто более 70% операций может выполняться в режиме ядра или привилегированном режиме.
Счетчики памяти
Наиболее важные счетчики использования памяти с точки зрения общего анализа быстродействия сервера находятся в объекте памяти Memory (экран 2).
По-моему, наиболее информативными являются счетчики доступной памяти в килобайтах, Available Kbytes и обмена страниц в секундах, Pages/sec. Счетчик доступной памяти в КБ показывает значения в более удобном виде, чем слишком детальный Available Bytes и слишком грубый счетчик Available Mbytes.
Счетчик Pages/sec показывает количество страниц виртуальной памяти, которые считываются или записываются в секунду. Для большинства систем размер страницы составляет 4 Кбайт, так что если взять показания данного счетчика, умноженные на 4, то получим представление об объеме данных, перемещаемом между оперативной памятью и дисковой системой за секунду.
Счетчики жестких дисков
Счетчики жестких дисков разделены на два объекта для логического диска LogicalDisk и физического диска PhysicalDisk. Эти счетчики очень близки по смыслу, но различаются способом идентификации дисков. Логический диск определяет диск по букве диска, а физический диск — по номеру (диск 0). Оба объекта показывают одинаковую информацию для одного выбранного счетчика. Но если требуется отслеживать активность для всех разделов физического диска, следует использовать объект физического диска PhysicalDisk. Основные счетчики, на которые следует обратить внимание, — это средняя длина очереди диска Average Disk Queue Length, скорость обмена с диском в байт/с Disk bytes/sec и свободной памяти в мегабайтах Free Megabytes.
Счетчик Average Disk Queue Length показывает, успевает ли накопитель отработать все запросы от выполняющихся процессов. Обычно в качестве порогового значения устанавливают длину очереди, состоящую из двух элементов. Если среднее число элементов в очереди более двух, это может служить симптомом повышенной нагрузки на дисковую систему. Этот счетчик тоже следует сопоставлять с базовым уровнем. Например, если за базовый уровень выбрано значение 2,3 элемента в очереди, и быстродействие системы при этом приемлемое, то, когда в будущем при возникновении проблем с общей производительностью сервера дисковая подсистема покажет те же или даже более низкие уровни загрузки, источник проблемы, скорее всего, следует искать в другом месте. Нормальное быстродействие определяется статистически, а какое быстродействие считать хорошим или плохим — понятие относительное, зависящее от исполняемых приложений и требований, которые пользователи предъявляют к системе.
Счетчик Disk bytes/sec может показать, соответствует ли работа диска заявленным производителем характеристикам. Иногда диски, для которых заявлена определенная скорость работы, в действительности могут работать с меньшей скоростью. Данный счетчик позволяет это обнаружить. Часто для решения проблемы снижения производительности дисковой системы по сравнению с заявленной достаточно обновить драйвер контроллера диска.
В сущности, Free Megabytes не является счетчиком производительности, но его можно использовать для прогнозирования потребления дискового пространства. Например, если ежемесячно измерять объем свободного пространства для каждого тома, можно определить скорость увеличения объема, занимаемого данными на диске. Журнал потребления дискового пространства поможет прогнозировать сроки, когда потребуется перенос устаревших данных в архив или увеличение объема дискового пространства.
Счетчики сетевых интерфейсов
Наконец, рассмотрим счетчики сетевых интерфейсов, доступ к которым предоставляется объектом Network Interface. Два главных счетчика — общей скорости в байт/с Bytes Total/sec и длины очереди вывода Output Queue Length. Счетчик Bytes Total/sec следует сопоставлять с принятым базовым уровнем. Если сетевой обмен значительно возрастает по сравнению с базовым уровнем, обычно это означает, что нагрузка на сервер существенно возросла по сравнению с нагрузкой, которая наблюдалась при определении базового уровня. Но это может также служить индикатором сетевой атаки или показывать необходимость разгрузки некоторых процессов. Счетчик Output Queue Length поможет определить, что требуется предпринять. Если среднее значение счетчика более двух, это значит, что сетевой интерфейс (или пропускная способность сетевой инфраструктуры) не справляется с передачей данных, предоставляемых сервером. Другими словами, сервер выдает данные с большей скоростью, чем сетевой интерфейс в состоянии передать.
Сохранение значений счетчиков
Теперь, когда рассмотрены 10 основных счетчиков быстродействия, которые помогают следить за главными факторами, определяющими быстродействие сервера, рассмотрим подробнее, каким образом эти счетчики можно получить и сохранить. Ниже приведены инструкции, как получить данные этих счетчиков с помощью инструмента Performance для Windows 2003 R2 или Windows 2003.
- Запустите инструмент Performance, выбрав Start, All Programs, Administrative Tools, Performance. Вы увидите, что счетчики Pages/sec, Avg. Disk Queue Length, и % Processor Time уже загружены.
- Для добавления счетчиков нажмите кнопку со значком плюс (или клавишами Ctrl+I).
- По умолчанию выбран объект Processor. В разделе выбора счетчиков Select counters from list выделите % Privileged Time и нажмите Add.
- При необходимости прокрутите список, выделите счетчик % User Time и нажмите Add.
- Выберите объект логического диска LogicalDisk и добавьте счетчики Disk bytes/sec и Free Megabytes, как описано в п. 3 и 4.
- Выберите объект Memory и добавьте счетчик Available Kbytes.
- Наконец, выберите объект Network Interface и добавьте счетчики Bytes Total/sec и Output Queue Length.
После выбора нужных счетчиков нажмите OK; графики должны иметь вид, как на экране 3.
По умолчанию мониторинг счетчиков выполняется автоматически и продолжается до тех пор, пока вы не остановите процесс. Уровень загрузки сервера может изменяться в зависимости от интенсивности работы. Загрузка счетчиков быстродействия в инструмент измерения производительности позволяет осуществлять мониторинг текущей деятельности, но это только одно из применений. Теперь следует создать журнал сведений о производительности, необходимый для определения базового уровня. Приведенные ниже инструкции позволяют создать журнал данных о производительности сервера за любой выбранный промежуток времени.
Запустите инструмент Performance, как описывалось ранее.
- В левой панели окна Performance разверните узел журналов и оповещений производительности Performance Logs and Alerts.
- Щелкните правой кнопкой мыши на Counter Logs и выберите изменение настроек журнала New Log Settings.
- Введите имя журнала, например «Базовый_уровень_1».
- На вкладке General нажмите кнопку добавления счетчиков Add Counters и добавьте счетчики, значения которых требуется сохранить.
- Перейдите на вкладку журналов Log Files и выберите удобный для анализа формат файла журнала. Я рекомендую использовать текст с разделителем запятыми (CSV), как наиболее удобный для анализа в Microsoft Excel.
- На вкладке расписания Schedule укажите время для автоматического запуска и остановки журнала или выберите запуск вручную. Эту операцию можно выполнить после того, как журнал уже создан.
- Нажмите ОК.
- Если система запросит создание папки для журналов, нажмите Yes.
Таким образом, журналы производительности настроены. Подготовив журнал для сохранения описанных в данной статье 10 счетчиков производительности, вы получите хорошую основу для определения базового уровня. Применяйте эти настройки для сбора показателей, соответствующих нормальной работе систем. Если вдруг пользователи начнут жаловаться на недостаточную производительность, вы сможете сравнить текущие журналы со старыми данными, когда все было хорошо. На экране 4 представлены два линейных графика Excel 2007, построенных из файлов CSV инструмента Performance.
Измеряйте быстродействие системы относительно базового уровня
Инструмент Performance предоставляет счетчики, которые могут использоваться для измерения быстродействия аппаратного обеспечения системы относительно рекомендуемых значений или базового уровня. Главным условием успешного использования инструмента является правильный выбор счетчиков производительности. Следует иметь в виду, что при установке серверных приложений Microsoft (Microsoft SQL Server, Microsoft Exchange Server, Microsoft IIS) в систему добавляются новые счетчики производительности для установленного приложения.
Том Карпентер (carpenter@sysedco.com) — старший консультант в компании SYSEDCO. Тренер и автор ряда книг, в том числе SQL Server 2005 Implementation and Maintenance (McGraw-Hill)