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

Обновлено: 05.02.2023

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

Windows счетчики производительности оптимизированы для обнаружения и сбора данных по администрированию и диагностике. Они не подходят для сбора данных с высокой частотой или для профилирования приложений, так как они не предназначены для сбора более одного раза в секунду. Для доступа к системной информации с более низкими издержками можно использовать более прямые API, такие как вспомогательное состояние процесса, глобалмемористатусекс, жетсистемтимесили GetProcessTimes. Для профилирования можно выполнять сбор журналов ETW с данными профилирования системы с помощью tracelog.exe с параметрами, или с -critsec -eflag -dpcisr -ProfileSource помощью профилирования счетчика оборудования.

не путайте Windows счетчики производительности с API QueryPerformanceCounter . Windows счетчики производительности обеспечивают высокоуровневую абстракцию для многих типов системных данных. Функция QueryPerformanceCounter предоставляет оптимизированный доступ к метке времени с высокой точностью.

Аудитория разработчиков

Поставщики счетчиков производительности обычно реализуются как драйверы режима ядра или службы пользовательского режима. Поставщики счетчиков производительности обычно пишутся на C или C++.

Требования к среде выполнения

Сведения о требованиях времени выполнения для определенного программного элемента см. в разделе "требования" на странице справочника по этому элементу.

Когда необходимо добиться максимального быстродействия и стабильности работы Windows Server, следует обратить внимание на встроенные счетчики производительности и средства анализа.

Когда необходимо добиться максимального быстродействия и стабильности работы 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.

  1. Запустите инструмент Perfor­mance, выбрав Start, All Programs, Administrative Tools, Performance. Вы увидите, что счетчики Pages/sec, Avg. Disk Queue Length, и % Processor Time уже загружены.
  2. Для добавления счетчиков нажмите кнопку со значком плюс (или клавишами Ctrl+I).
  3. По умолчанию выбран объект Processor. В разделе выбора счетчиков Select counters from list выделите % Privileged Time и нажмите Add.
  4. При необходимости прокрутите список, выделите счетчик % User Time и нажмите Add.
  5. Выберите объект логического диска LogicalDisk и добавьте счетчики Disk bytes/sec и Free Megabytes, как описано в п. 3 и 4.
  6. Выберите объект Memory и добавьте счетчик Available Kbytes.
  7. Наконец, выберите объект Net­work Interface и добавьте счетчики Bytes Total/sec и Output Queue Length.

После выбора нужных счетчиков нажмите OK; графики должны иметь вид, как на экране 3.

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

Запустите инструмент Performance, как описывалось ранее.

  1. В левой панели окна Performance разверните узел журналов и оповещений производительности Performance Logs and Alerts.
  2. Щелкните правой кнопкой мыши на Counter Logs и выберите изменение настроек журнала New Log Settings.
  3. Введите имя журнала, например «Базовый_уровень_1».
  4. На вкладке General нажмите кнопку добавления счетчиков Add Counters и добавьте счетчики, значения которых требуется сохранить.
  5. Перейдите на вкладку журналов Log Files и выберите удобный для анализа формат файла журнала. Я рекомендую использовать текст с разделителем запятыми (CSV), как наиболее удобный для анализа в Microsoft Excel.
  6. На вкладке расписания Schedule укажите время для автоматического запуска и остановки журнала или выберите запуск вручную. Эту операцию можно выполнить после того, как журнал уже создан.
  7. Нажмите ОК.
  8. Если система запросит создание папки для журналов, нажмите Yes.

Таким образом, журналы производительности настроены. Подготовив журнал для сохранения описанных в данной статье 10 счетчиков производительности, вы получите хорошую основу для определения базового уровня. Применяйте эти настройки для сбора показателей, соответствующих нормальной работе систем. Если вдруг пользователи начнут жаловаться на недостаточную производительность, вы сможете сравнить текущие журналы со старыми данными, когда все было хорошо. На экране 4 представлены два линейных графика Excel 2007, построенных из файлов CSV инструмента Performance.

Измеряйте быстродействие системы относительно базового уровня

Инструмент Performance предоставляет счетчики, которые могут использоваться для измерения быстродействия аппаратного обеспечения системы относительно рекомендуемых значений или базового уровня. Главным условием успешного использования инструмента является правильный выбор счетчиков производительности. Следует иметь в виду, что при установке серверных приложений Microsoft (Microsoft SQL Server, Microsoft Exchange Server, Microsoft IIS) в систему добавляются новые счетчики производительности для установленного приложения.

Когда необходимо добиться максимального быстродействия и стабильности работы Windows Server, следует обратить внимание на встроенные счетчики производительности и средства анализа.

Когда необходимо добиться максимального быстродействия и стабильности работы 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.

  1. Запустите инструмент Perfor­mance, выбрав Start, All Programs, Administrative Tools, Performance. Вы увидите, что счетчики Pages/sec, Avg. Disk Queue Length, и % Processor Time уже загружены.
  2. Для добавления счетчиков нажмите кнопку со значком плюс (или клавишами Ctrl+I).
  3. По умолчанию выбран объект Processor. В разделе выбора счетчиков Select counters from list выделите % Privileged Time и нажмите Add.
  4. При необходимости прокрутите список, выделите счетчик % User Time и нажмите Add.
  5. Выберите объект логического диска LogicalDisk и добавьте счетчики Disk bytes/sec и Free Megabytes, как описано в п. 3 и 4.
  6. Выберите объект Memory и добавьте счетчик Available Kbytes.
  7. Наконец, выберите объект Net­work Interface и добавьте счетчики Bytes Total/sec и Output Queue Length.

После выбора нужных счетчиков нажмите OK; графики должны иметь вид, как на экране 3.

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

Запустите инструмент Performance, как описывалось ранее.

  1. В левой панели окна Performance разверните узел журналов и оповещений производительности Performance Logs and Alerts.
  2. Щелкните правой кнопкой мыши на Counter Logs и выберите изменение настроек журнала New Log Settings.
  3. Введите имя журнала, например «Базовый_уровень_1».
  4. На вкладке General нажмите кнопку добавления счетчиков Add Counters и добавьте счетчики, значения которых требуется сохранить.
  5. Перейдите на вкладку журналов Log Files и выберите удобный для анализа формат файла журнала. Я рекомендую использовать текст с разделителем запятыми (CSV), как наиболее удобный для анализа в Microsoft Excel.
  6. На вкладке расписания Schedule укажите время для автоматического запуска и остановки журнала или выберите запуск вручную. Эту операцию можно выполнить после того, как журнал уже создан.
  7. Нажмите ОК.
  8. Если система запросит создание папки для журналов, нажмите Yes.

Таким образом, журналы производительности настроены. Подготовив журнал для сохранения описанных в данной статье 10 счетчиков производительности, вы получите хорошую основу для определения базового уровня. Применяйте эти настройки для сбора показателей, соответствующих нормальной работе систем. Если вдруг пользователи начнут жаловаться на недостаточную производительность, вы сможете сравнить текущие журналы со старыми данными, когда все было хорошо. На экране 4 представлены два линейных графика Excel 2007, построенных из файлов CSV инструмента Performance.

Измеряйте быстродействие системы относительно базового уровня

Инструмент Performance предоставляет счетчики, которые могут использоваться для измерения быстродействия аппаратного обеспечения системы относительно рекомендуемых значений или базового уровня. Главным условием успешного использования инструмента является правильный выбор счетчиков производительности. Следует иметь в виду, что при установке серверных приложений Microsoft (Microsoft SQL Server, Microsoft Exchange Server, Microsoft IIS) в систему добавляются новые счетчики производительности для установленного приложения.

Если бы меня спросили, как до предела увеличить скорость работы Windows NT Workstation 4.0, я бы ответила так: выгрузите оболочку Explorer и работайте только с командной строкой, не запуская надоевшие графические приложения, - и Windows NT Workstation 4.0 понесется вскачь.

Обходные пути повышения производительности Windows NT Workstation 4.0

Если бы меня спросили, как до предела увеличить скорость работы Windows NT Workstation 4.0, я бы ответила так: выгрузите оболочку Explorer и работайте только с командной строкой, не запуская надоевшие графические приложения, — и Windows NT Workstation 4.0 понесется вскачь. Такой подход, который я называю «методика запрета излишеств», широко распространен среди поклонников UNIX, полагающих, и иногда справедливо, что графические приложения замедляют работу системы. Однако независимо от того, насколько быстро функционирует ядро операционной системы, Windows NT Workstation 4.0 все-таки работает в графической среде и запускает графические приложения. Поэтому в большинстве случаев отключить оболочку Windows Explorer, не жертвуя функциональностью, нельзя.

Исходя из этого, предлагаю подойти к проблемам оценки и настройки скорости работы приложений Windows NT Workstation 4.0 с другой стороны и попытаться получить от операционной системы максимум производительности иным способом. Так, для выявления ресурсоемких приложений можно использовать счетчики Performance Monitor, а также прибегнуть к помощи ряда утилит из Resource Kit, позволяющих оценить уровень производительности.

Контроль утечки памяти

Первые два счетчика в Таблице 1, Process:Working Set и Process: Pagefile Bytes, дают возможность контролировать уровень потребления памяти приложением. Счетчик Working Set — важный показатель эффективности работы программы, поскольку позволяет определить, сколько физической памяти (т. е. реальных страниц ОЗУ) она занимает. Постоянно отслеживая значение счетчика, можно обнаружить вызываемые приложением утечки памяти. Если, как показано на Экране 1, наблюдается постоянное увеличение показаний счетчика, значит, приложение не обеспечивает корректного освобождения ранее выделенной для него памяти. Однако при этом важно понимать алгоритм работы приложения. Например, если я оставлю в памяти компьютера не выполняющую никаких задач копию Microsoft Word, а ее рабочее пространство будет непрерывно увеличиваться, то можно быть уверенным, что Word инициирует утечки памяти. Однако, когда на моем компьютере функционирует программа сбора данных, размещающая информацию в массивах увеличивающихся размеров, прирост значения Working Set ее процесса будет вполне оправданным (хотя, возможно, и нежелательным).

Значение счетчика Process:Pagefile Bytes весьма точно следует за изменением размера рабочего пространства приложения, увеличиваясь по мере роста объема потребляемой приложением памяти. Например, при использовании Working Set для контроля за работой приложения, порождающего утечки памяти, видно, что значение счетчика PageFile Bytes будет находиться в близкой к линейной зависимости от Working Set.

Утилиты управления производительностью

В состав Microsoft Windows NT Workstation 4.0 Resource Kit входят несколько утилит для настройки производительности. В каталоге Perftool можно найти следующие файлы.

cntrtoolcounters.hlp. В этом файле подсказки перечислены и описаны стандартные счетчики Performance Monitor.

logtools ypeperf.exe. Это утилита командной строки, аналогичная Performance Monitor, которая выводит на экран значения параметров, разделенные запятыми, как показано на Экране А. Typeperf отслеживает параметры, соответствующие объектам и счетчикам Performance Monitor, и возвращает их текущие значения. На Экране А выведены значения, полученные при мониторинге Memory: Committed Bytes и Microsoft Internet Explorer Working Set с интервалом в 1 секунду. Задавая путь в формате UNC перед объектом, за которым проводится наблюдение (например, «machinememorycommitted bytes»), можно следить за производительностью удаленных машин.

meastoolempty.exe. Это утилита удаляет набор счетчиков Working Set работающего приложения. Используется для освобождения большего количества физической памяти непосредственно приложению.

meastool timer.exe. Данная утилита показывает время работы конкретного приложения, включая время работы в привилегированном и пользовательском режимах (в процентах).

meastoolpview.exe. Данная утилита выводит детальную информацию о памяти, выделенной процессу системой. Кроме этого она помогает узнать маркер безопасности, который система назначила данному процессу и его потокам.

meastool op.exe. Утилита командной строки, которая в непрерывном режиме выводит основные процессы, занимающие процессор.

meastoolwperf.exe. Графическая утилита, показывающая значения большого числа параметров, характеризующих использование памяти и процессора. Напоминает утилиту Perfmeter в UNIX.

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

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

Потребитель — это программный компонент, который использует данные о производительности. Windows включает несколько встроенных средств , которые используют данные о производительности. К ним относятся диспетчер задач, монитор ресурсов, монитор производительности, typeperf.exe, logman.exe и relog.exe. Разработчики могут создавать сценарии и приложения, обращающиеся к счетчикам производительности через API-интерфейсы счетчика производительности.

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

  • Поставщик v1 — это программный компонент, который публикует данные производительности с помощью библиотеки DLL производительности , которая выполняется в процессе потребителя. Поставщик v1 устанавливается на компьютере с помощью .ini файла. Архитектура поставщика v1 устарела. Новые поставщики должны использовать архитектуру поставщика v2.
  • Поставщик v2 — это программный компонент, который публикует данные производительности с помощью API поставщика счетчиков производительности. Поставщик v2 устанавливается на систему через .man файл (XML-манифест).

Набор счетчиков — это группирование данных о производительности в поставщике. Набор счетчиков имеет имя и один или несколько счетчиков. Сбор данных из набора счетчиков возвращает число экземпляров. в некоторых Windows api каунтерсетс называются объектами производительности. Например, поставщик данных производительности для системы базы данных может предоставлять набор счетчиков для статистики по базе данных.

Счетчик — это определение отдельной части данных о производительности. У счетчика есть имя и тип. Например, набор счетчиков «статистика по базе данных» может содержать счетчик с именем «транзакций в секунду» с типом PERF_COUNTER_COUNTER .

Экземпляр — это сущность, в которой сообщается о данных о производительности. Экземпляр имеет имя (строка) и одно или несколько значений счетчика. Например, набор счетчиков «статистика по базе данных» может содержать по одному экземпляру на базу данных. Имя экземпляра будет именем базы данных, а каждый экземпляр будет содержать значения счетчика для счетчиков "транзакций в секунду", "использование памяти" и "использование диска".

Значение счетчика — это значение одного элемента данных счетчика производительности. Значение счетчика — это целое число без знака, 32-бит или 64-бит, в зависимости от типа соответствующего счетчика. При разговоре об экземпляре значение счетчика иногда может называться счетчиком или значением.

Может быть полезно связать термины счетчиков производительности с более привычными условиями электронной таблицы. Набор счетчиков подобен таблице. Счетчик похож на столбец. Экземпляр похож на строку. Значение счетчика похоже на ячейку в таблице.

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

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

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

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

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

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

Каждый счетчик имеет тип. Тип счетчика указывает тип необработанного значения счетчика (беззнаковое 32-разрядное целое число или неподписанное 64-разрядное целое число). Тип счетчика также указывает, что представляет собой необработанное значение счетчика, которое определяет, как обработанное значение должно обрабатываться для создания полезной статистики.

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

  • PERF_COUNTER_LARGE_RAWCOUNT — Это 64-разрядное необработанное значение, которое не требует никакой обработки. Он подходит для значений на момент времени, например "байт используемой памяти".
  • PERF_COUNTER_RAWCOUNT_HEX — Это 32-разрядное необработанное значение, которое должно быть полезно только для простого шестнадцатеричного форматирования. Он подходит для получения точки во времени или идентификации, например "Flags" или "базовый адрес".
  • PERF_COUNTER_BULK_COUNT — Это 64-разрядное необработанное значение, указывающее количество событий и используемое для вычисления скорости возникновения событий. Чтобы быть полезным, для этого типа счетчика требуется два образца, которые были разделены по времени. Отформатированное значение — это частота событий, т. е. количество событий, произошедших в секунду за интервал между двумя примерами. Учитывая два образца s0 и s1 , отформатированное значение (частота событий) будет вычисляться как (s1.EventCount - s0.EventCount)/(s1.TimestampInSeconds - s0.TimestampInSeconds) .

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

Архитектура API производительности

приложения счетчиков производительности вызывают Windows api, которые вызывают поставщики для получения данных о производительности.

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

    , такие как диспетчер задач, монитор ресурсов, монитор производительности и typeperf.exe.
  • Предоставляемые корпорацией Майкрософт высокоуровневые поверхности API, которые предоставляют данные счетчиков производительности, такие как классы производительности WMI.
  • Собственные приложения или скрипты, использующие API-интерфейсы потребителя счетчика производительности.

Большинство потребителей счетчиков производительности используют API из PDH.dll для получения данных о производительности. PDH управляет множеством сложных аспектов сбора счетчиков производительности, таких как анализ запросов, сопоставление экземпляров по нескольким примерам и вычисление форматированных значений из необработанных данных счетчиков. Реализация PDH использует API реестра при использовании данных от поставщика v1 и использует API-интерфейсы потребителя v2 При использовании данных от поставщика v2.

Некоторые старые получатели счетчиков производительности используют API реестра для получения данных о производительности из специального HKEY_PERFORMANCE_DATA раздела реестра. Это не рекомендуется для нового кода, поскольку обработка данных из реестра является сложной и подвержена ошибкам. Реализация API реестра напрямую поддерживает сбор данных от поставщиков v1. Он косвенно поддерживает сбор данных от поставщиков v2 через слой перевода, использующий API-интерфейсы потребителя версии 2.

Некоторые потребители счетчиков производительности используют функции-потребители версии PerfLib v2 для прямого доступа к данным из поставщиков v2. Это сложнее, чем использование данных с помощью интерфейсов API PDH, но этот подход может быть полезен, если интерфейсы API PDH не могут быть использованы из-за проблем с производительностью или зависимостями. Реализация PerfLib v2 напрямую поддерживает сбор данных от поставщиков v2. Он не поддерживает сбор данных от поставщиков v1.

Windows OneCore не включает PDH.dll и не поддерживает использование данных счетчиков производительности с помощью api-интерфейсов реестра. потребители, работающие на OneCore, должны использовать функции потребителя версии 2 PerfLib.

Поставщики v1 реализуются как библиотека DLL поставщика, которая загружается в процесс потребителя. Реализация API реестра управляет загрузкой библиотеки DLL поставщика, вызовом библиотеки DLL для получения данных о производительности и выгрузкой библиотеки DLL соответствующим образом. библиотека DLL поставщика отвечает за сбор данных о производительности по мере необходимости, например с помощью обычных Windows api, RPC, именованных каналов, общей памяти или других механизмов взаимодействия между процессами.

поставщики V2 реализуются как программа пользовательского режима (часто это Windows служба) или драйвер режима ядра. Обычно код поставщика данных о производительности интегрируется непосредственно в существующий компонент (т. е. драйвер или служба сообщает о своей статистике). Реализация PerfLib v2 управляет запросами и ответами с помощью расширения ядра PCW.sys, поэтому поставщику обычно не требуется реализовывать взаимодействие между процессами для предоставления данных о производительности.

Windows api и средства счетчиков производительности включают ограниченную поддержку доступа к счетчикам производительности с других компьютеров с помощью удаленного реестра (для поставщиков V1) и RPC (для поставщиков V2). Эту поддержку часто трудно использовать в терминах элементов управления проверки подлинности (средства и API-интерфейсы могут проходить проверку подлинности только в качестве текущего пользователя), а также в плане конфигурации системы (необходимые конечные точки и службы отключены по умолчанию). Во многих случаях лучше обращаться к счетчикам производительности удаленных систем через инструментарий WMI , а не через встроенную поддержку удаленного доступа.

Выделенная виртуальная память и файл подкачки

Счетчики Commited Bytes, Commit Limit и %Commited Bytes In Use — очень удобный инструментарий для определения интенсивности использования памяти в Windows NT Workstation. Однако, прежде чем говорить о них, необходимо разобраться с принципами формирования файла подкачки.

В документации Microsoft указано, что минимальный размер этого файла должен быть равен объему физической памяти плюс еще примерно 12 Мбайт. Однако это значение может быть оптимизировано, исходя из реальных требований системы. О максимальном же размере беспокоиться нечего, ибо во всех исследованных мною версиях Windows NT, включая NT 4.0 с установленным Service Pack 6 (SP6), операционная система игнорировала любое задаваемое значение. Она увеличивает файл подкачки настолько, насколько это необходимо для удовлетворения потребностей в памяти, вплоть до исчерпания места на диске. Чтобы проверить, как Windows NT реагирует на возрастающий дефицит памяти, во вкладке Performance значка System на Control Panel введем значение максимального размера файла подкачки. Затем возьмем из каталога perftoolmeastool пакета Windows NT Resource Kit файл leakyapp.exe. Это созданное программистами Microsoft приложение My Leaky App, предназначенное для тестирования поведения системы в процессе непрекращающегося выделения памяти. После запуска этой программы размер занимаемой ею системной памяти будет постоянно расти.

Запустим приложение и, для инициации тестового процесса, нажмем кнопку Start Leaking. Приложение будет непрерывно отображать уровень использования файла подкачки, позволяя, как показано на Экране 2, останавливать и снова запускать процедуру запроса на дополнительную память. Если программа будет работать достаточно долго, размер файла подкачки начнет увеличиваться сверх предельного уровня, указанного во вкладке Performance. После превышения файлом подкачки установленного минимального значения для его возврата к исходной величине необходимо перезагрузить компьютер.

Когда Windows NT начнет, в целях удовлетворения растущих запросов на память, увеличивать файл подкачки, производительность резко упадет, особенно если файл размещен на медленном или сильно фрагментированном диске. С помощью счетчиков Committed Bytes и Commit Limit можно фиксировать рост потребления памяти, что провоцирует резкий рост файла подкачки. Упрощенно говоря, Windows NT записывает в Commit Limit значение, равное сумме объема установленной на компьютере физической памяти и размера файла подкачки, заданного во вкладке Performance. Значение счетчика Committed Bytes равняется общему размеру выделенной работающему процессу памяти. По мере роста Committed Bytes происходит приближение к предельному значению Commit Limit, достичь которого можно в случае выполнения следующих один за другим запросов на память со стороны одного или нескольких приложений. Следя за счетчиком %Committed Bytes In Use, можно увидеть, что при достижении им величины 100% система начнет увеличивать размеры файла подкачки, пытаясь удовлетворить растущие запросы на память.

Приступая к работе

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

Использование процессора

Счетчик Process:%Processor Time оценивает степень загрузки процессора приложением. Это важно знать при выявлении узких мест в работе операционной системы. Вместе с тем, при использовании данного счетчика надо быть очень внимательным. Например, некоторые приложения могут находиться в цикле ожидания в преддверии наступления определенных системных событий. Такие циклы способны вызывать стопроцентную загрузку процессора, что, однако, не мешает рабочей станции запускать другие процессы.

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

Включенная в Windows NT Resource Kit утилита CPU Stress позволяет искусственно загрузить процессор и выяснить, как система должна себя вести в подобных ситуациях. С помощью этого средства можно настраивать приоритеты и уровень активности четырех потоков, контролировать степень загруженности процессора приложениями и определять значимость каждого потока для операционной системы (например, оценивать, какие потоки с низким приоритетом уступают управление более приоритетным потокам).

Утилиты Windows NT Resource Kit для управления производительностью

Помимо My Leaky App и CPU Stress, Resource Kit содержит ряд полезных утилит управления производительностью компьютеров, работающих под Windows NT. Большая часть их размещена в папке Perftool, а список некоторых из них приведен во врезке «Утилиты управления производительностью». Секрет успеха при управлении производительностью Windows NT Workstation — отличное знание своих приложений и порядка использования ими ресурсов операционной системы.

После освоения работы со счетчиками Performance Monitor я рекомендую обратить внимание на утилиту Response Probe из Resource Kit, которая дает возможность создавать скоростные приложения, заранее оценивая их характеристики. С ее помощью можно генерировать искусственные нагрузки, позволяющие моделировать уровень загруженности системы. Вместе с тем, оптимизация производительности при работе с одним приложением — не самая трудная задача. Самое интересное начинается тогда, когда в работу включаются одновременно 20 приложений и целый набор служб и утилит.

ОБ АВТОРЕ:

Таблица 1. Объекты и счетчики.
Объект: СчетчикОбъект контроляПорядок использования
Process: Working Set (Процесс: Рабочее пространство) Количество потребляемой процессом физической оперативной памяти. Непрерывный контроль использования приложением памяти и выявление утечки памяти.
Process: Pagefile Bytes (Процесс: Байт файла подкачки) Количество памяти, которое процесс использует в файле подкачки. Непрерывный контроль использования приложением всей доступной памяти.
Memory: Committed Bytes (Память: Байт выделенной виртуальной памяти) Общий размер выделенной виртуальной памяти, которую в данный момент занимают все пользовательские процессы. Позволяет установить момент начала роста файла подкачки (путем сравнения с Commit Limit).
Memory: Commit Limit (Память: Предел выделенной виртуальной памяти) Расчетная величина, которая определяет, какое количество виртуальной памяти система может выделить, не увеличивая размера файла подкачки. Помогает выяснить, насколько размер файла подкачки соответствует системным требованиям. Используется для расчета значений счетчика %Commited Bytes In Use.
Memory: % Committed Bytes In Use (Память: %использования выделенной памяти) Соотношение величин счетчиков Commited Bytes и Commit Limit. Позволяет установить момент начала роста файла подкачки.
Process: % Processor Time (Процесс: %загруженности процессора) Степень использования процессора заданным процессом. Позволяет выявить наиболее загружающие процессор приложения.

Почему именно Performance Monitor?

Performance Monitor — отличный инструмент для оценки производительности NT Workstation или NT Server. О том, как работать с ним в целях сбора информации о компьютере, можно узнать из документации Microsoft и специальной литературы. Однако я хочу обратить внимание на средства Performance Monitor, позволяющие оценивать производительность приложений. Особенно полезными мне представляются два его объекта: Process и Memory. Объект Process собирает информацию обо всех работающих процессах, будь то системные процессы, пользовательские процессы или службы Windows NT. Объект Memory собирает данные, описывающие компоненты подсистемы управления памятью Windows NT, включая файловый кэш, физическую память, а также несколько выгружаемых и невыгружаемых пулов памяти, которые Windows NT использует для системных процессов.

Хотя при оценке производительности Windows NT Workstation может возникнуть необходимость в определении скорости дисковых подсистем, я не буду останавливаться подробно на этой теме. Гораздо важнее разобраться, в чем корень проблемы и рассмотреть порядок использования приложением процессорных ресурсов и памяти, а также того, как этот порядок влияет на общую производительность системы.

Такие проблемы, как «пробуксовка» диска, зачастую являются симптомами некорректной работы самих приложений. Хотя интенсивный рост файла подкачки отчасти можно увязывать с медленной дисковой подсистемой или чрезмерно фрагментированным диском, в первую очередь следует выяснить первопричину этого явления. В Таблице 1 приведены объекты и счетчики, которые позволяют следить за работой приложения, и здесь же кратко описано их назначение. Если на основании показателей этих счетчиков создать файл рабочей области Performance Monitor (.pmw), то всегда можно быстро загрузить его для осуществления контроля за работой приложения. Однако следует помнить, что файлы рабочих областей содержат имя рабочей станции или сервера, на которых они были созданы. Поэтому после загрузки таких файлов на другом компьютере это имя необходимо скорректировать.

Читайте также: