Длина очереди диска в мониторе ресурсов какая должна быть

Длина очереди диска в мониторе ресурсов какая должна быть

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

Производительность сервера зависит от многих факторов. Условно все источники проблем можно разделить на несколько основных групп, а именно — процессор, оперативная память, жесткий диск, сеть и программное обеспечение. Если причина сбоев не очевидна, то в первую очередь нужно проверить состояние перечисленных компонентов. Для начала рассмотрим штатные инструменты для анализа производительности системы на примере Windows Server 2012 R2.

1. Диспетчер задач

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

Способы запуска Диспетчера задач:

  • щелкнуть правой кнопкой мыши на панели задач и выбрать в меню “Диспетчер задач
  • ввести команду “taskmgr” в окне “Выполнить” или командной строке.
  • нажать комбинацию клавиш “Ctrl+Alt+Del” и выбрать “Диспетчер задач
  • нажать комбинацию клавиш “Ctrl+Shift+Esc

Диспетчер задач отображает в реальном времени для каждого работающего процесса объем потребляемой оперативной памяти и нагрузку на процессор. Наиболее полная информация представлена на вкладке “Подробности”. Если щелкнуть мышью по заголовку любого столбца, строки будут отсортированы по его значениям. Для принудительного завершения процесса нужно щелкнуть правой кнопкой мыши по соответствующей строке и выбрать “Снять задачу”. Кроме этого в контекстном меню доступны дополнительные действия.

Как устроен диспетчер задач Windows - мониторинг процессов на сервере

Если на сервере работает одновременно несколько пользователей, будет полезна вкладка “Пользователи” на которой все процессы сгруппированы по пользователям. Щелчок правой кнопкой мыши по имени пользователя вызывает контекстное меню с доступными действиями. Администратор может отправить сообщение, отключить или полностью завершить сеанс выбранного пользователя.

Вкладка “Службы” отображает состояние служб, а через контекстное меню можно выполнить остановку, запуск или перезапуск службы. На вкладке “Процессы” выполнена группировка процессов по типу, а на вкладке “Производительность” текущая активность компонентов компьютера представлена в графическом виде.

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

2. Монитор ресурсов

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

Как запустить мониторинг ресурсов? Есть несколько способов:

  • нажать кнопку “Открыть монитор ресурсов”, расположенную на вкладке “Производительность” диспетчера задач;
  • ввести команду “resmon” в командной строке или окне “Выполнить”;
  • выбрать “Монитор ресурсов” в меню “Средства” диспетчера серверов.

На каждой вкладке монитора ресурсов информация представлена в табличном и графическом виде. Для того, чтобы в таблицах изменить набор столбцов, нужно щелкнуть по заголовку любого столбца правой кнопкой мыши и нажать “Выбрать столбцы”. Если на любой из вкладок пометить нужные процессы флажком, информация в других таблицах будет автоматически отфильтрована по выбранным значениям.

Сведения об активности процессора, памяти, дисков и сети представлены на отдельных вкладках, а вклада “Обзор” содержит сводную информацию по всем компонентам.

Как запустить мониторинг ресурсов. Основные свойства инструмента

Рассмотрим некоторые полезные возможности монитора ресурсов на Windows.

A. Поиск процесса, блокирующего файл

Бывают ситуации, когда при попытке удалить или изменить файл система выводит сообщение, что файл используется другим приложением и не может быть удален. Для поиска блокирующего процесса нужно ввести часть имени файла в разделе “Связанные дескрипторы”, вкладки “ЦП”. При необходимости процесс можно принудительно завершить.

Поиск процесса блокирующего файл с помощью мониторинга ресурсов

B. Просмотр дисковой активности

На вкладке “Диск” отображаются операции чтения-записи с диска. На скриншоте показан случай, когда система активно обращается к файлу подкачки “c:/pagefile.sys”, обычно это существенно замедляет работу системы и свидетельствует о нехватки оперативной памяти.

Также следует обратить внимание на показатель “Длина очереди диска”, считается, что он не должен превышать более чем в два раза количество физических дисков. Если на сервере установлен один физический диск, нормальной считается длина очереди 1-2. Частые всплески этого показателя и высокое время активности диска могут говорить о низкой производительности дисковой подсистемы.

Просмотр дисковой подсистемы через мониторинг ресурсов - простые способы повысить работоспособность Windows

C. Просмотр сетевой активности

На вкладке “Сеть” можно выявить процессы создающие нагрузку на сеть. Это могут быть сторонние приложения, как на скриншоте, так и внутренние процессы. Как пример можно привести автоматическое обновление операционной системы.

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

Кроме этого, на вкладке “Сеть” можно видеть прослушиваемые порты и состояние брандмауэра.

Мониторинг сети в ОС Windows

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

3. Системный монитор

Системный монитор позволяет отслеживать счетчики различных системных объектов операционной системы. Например, объект “Физический диск” содержит счетчики “Процент активности диска” и “Средняя длина очереди диска”, а объект “Память” — счетчик “Вывод страниц/с”.

  • выбрать “Системный монитор” в меню “Средства” диспетчера серверов;
  • выполнить команду “perfmon” в командной строке или окне “Выполнить”;
  • выбрать “Системный монитор” в группе “Администрирование” панели управления.

Системный монитор состоит из трех основных компонентов: “Средства наблюдения”, “Группы сборщиков данных” и “Отчеты”. В разделе “Средства наблюдения” находится системный монитор, с помощью которого можно наблюдать показания счетчиков в реальном времени или просматривать ранее сохраненные отчеты. Раздел “Группы сборщиков данных” содержит набор счетчиков за которыми будет вестись наблюдение. Для диагностики можно воспользоваться двумя готовыми системными группами или создать собственные. В разделе “Отчеты” сохраняются результаты мониторинга.

Рассмотрим диагностику используя готовую группу сборщиков данных “System Performance (Производительность системы)

1. Переходим в раздел “Группы сборщиков данных” — “Системные” и запускаем группу “System Performance (Производительность системы)

Поиск причины тормозов Windows - используем Системный монитор для сбора статистики

2. Ожидаем завершения сбора данных, продолжительность по умолчанию 1 минута, и открываем отчет в разделе “Отчеты” — “System Performance

Отчет Системного монитора о производительности Windows

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

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

Просмотр отчета в Системном мониторе

Отчеты хранятся в обычных файлах в папке “c:\Perflog”, поэтому их легко можно перенести на другой компьютер.

Встроенные группы сборщиков данных недоступны для редактирования, но для групп созданных вручную можно задавать различные параметры, например общую длительность сбора данных или время запуска по расписанию.
Для создания группы нужно щелкнуть правой кнопкой мыши по папке “Особые” в разделе “Группы сборщиков данных”, выбрать “Создать” — “Группа сборщиков данных” и следовать указаниям мастера. Если на созданной группе щелкнуть правой кнопкой мыши и выбрать “Свойства”, откроется окно в котором можно изменить параметры по умолчанию.

Создание собственной группы сборщиков данных о производительности Windows

4. Журнал событий

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

Способы запуска Журнала событий:

  • выбрать “Просмотр событий” в меню “Средства” диспетчера серверов.
  • выбрать “Просмотр событий” в группе “Администрирование” панели управления.
  • выполнить команду “eventvwr” в командной строке или окне “Выполнить

Журналы находятся в разделах “Журналы Windows” и “Журналы приложений и служб”. Скорее всего информация о сбоях будет находиться в журнале “Система” раздела “Журналы Windows”. Но если заранее неизвестно, что именно нужно искать, то можно воспользоваться готовым представлением “События управления”, в котором отображается информация из всех основных журналов. Готовое представление недоступно для редактирования, поэтому если возникнет необходимость изменить выводимые журналы или категории событий можно создать собственное представление или скопировать существующее.

Щелкнем правой кнопкой мыши на представлении “События управления” и выберем “Копировать настраиваемое представление”, в открывшемся окне нажимаем “Ок”. В результате появится новое представление “События Управления (1)”. Для редактирования нужно выделить созданное представление и нажать в правой части окна кнопку “Фильтр текущего настраиваемого представления”.

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

Поиск причины зависания Windows с помощью журнала событий

5. Монитор стабильности системы

Монитор стабильности системы можно рассматривать как дополнение к журналу событий. Для запуска нужно открыть “Панель управления”, перейти в раздел “Центр поддержки” и нажать “Показать журнал стабильности работы” в группе “Обслуживание”.

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

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

Просмотр событий в мониторе стабильности системы

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

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

Длина очереди диска в мониторе ресурсов какая должна быть

Анализ загрузки диска средствами Системного монитора, Процент загрузки диска (% Disk Time), Текущая длина очереди диска (Current Disk Queue Length), % Активности диска при чтении (% Disk Read Time) и % Активности диска при записи (% Disk Write Time)

Третья подсистема, мониторинг которой имеет смысл производить для сервера SQLServer 2005, — это дисковая подсистема. Она считается главной с точки зрения производительности для задач DataWarehousing, т. е. для хранилищ данных. Объяснение достаточно простое — по сравнению с обычными системами OLTP, наиболее распространенная операция в системах DataWarehouse — это полное сканирование всей таблицы. Операции изменения данных в системах DataWarehouse также очень редки. Поэтому роль кэша в них, в отличие от систем OLTP, невелика, а вот требования к дискам предъявляются намного серьезнее.

По опыту практической работы можно отметить, что и для систем OLTP именно увеличение скорости работы дисковой подсистемы дает наибольший эффект.

Главный счетчик для дисковой подсистемы — Процент загрузки диска (% Disk Time) для объекта Логический диск (Logical Disk) или Физический диск (Physical Disk). Объект Логический диск удобнее, поскольку информация показывается по разделам, но он почему-то не всегда доступен. Пороговое значение для этого счетчика формулируется так: в течение продолжительного промежутка времени значение не должно приближаться к 100%. Если дисковая подсистема постоянно загружена почти на 100%, то очевидно, что она является узким местом системы и ее надо заменить. Если вы не уверены, что за активность дисковой подсистемы ответственен именно SQLServer, имеет смысл проверить значение счетчика Обмен данными, байт в секунду (I/O bytes/sec) для объекта Процесс (сравнить это значение для экземпляра SQLServer и объекта _Total).

Отметим лишь одну особенность счетчиков Процент загрузки диска для объектов Логический диск и Физический диск: они не всегда показывают точные значения при использовании RAID-массивов.

Форум Тринити

Так, в практической работе иногда можно увидеть значение этого параметра более 100%. Однако больших проблем это не создает: при нормальной нагрузке на дисковую подсистему среднее значение этого счетчика должно быть существенно ниже 50%.

Еще один счетчик, который можно использовать для проверки, — Текущая длина очереди диска (Current Disk Queue Length) для тех же объектов Физический диск и Логический диск.

Этот параметр показывает, сколько запросов стоит в очереди на обработку дисковой подсистемы. Его значение на протяжении длительного промежутка времени не должно превышать 2 для одного диска (если, например, в RAID-массиве находится 10 дисков, то среднее значение этого счетчика не должно быть больше 20).

Если вы не уверены, чем именно вызвана загрузка диска — операциями чтения или записи, то определить это помогут счетчики % Активности диска при чтении (% Disk Read Time) и % Активности диска при записи (% Disk Write Time) для объектов Физический диск и Логический диск.

Если узким местом системы является диск (а это случается очень часто), то вариантов решения может быть несколько. Самое простое и очевидное из них — обновить дисковую подсистему, например, купив новый RAID-массив. Однако большой выигрыш могут дать и другие, более дешевые варианты решения.

Очень часто лишние операции с диском возникают из-за проблем с индексами. Про оптимизацию системы индексов будет рассказываться далее в разд. 11.5.5.

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

Какое нормальное значение счетчика «Средняя длина очереди диска»?

Всем доброго времени суток !

Уже описывал свою конфигурацию: сервер Win2K8 подключен к СХД Xyratex c 12-мя дисками SATA через FC-адаптеры 4Gb\s. На данной полке создано два RAID-5 массива по 5 дисков в каждом, 2 — в глобальном спейре.

Сервер (через ЛУН-маппинг) видит один из этих рейдов, на котором нарезаны LUNы для файлопомойки, итого в Windows видно 3 логических диска, физически расположенных на данной полке.
По рекомендации Microsoft параметр системного монитора "Текущая длина очереди диска" при нормальной производительности не должен превышать число шпинделей + 2, т.е. в моем случае этот парамет для логических дисков сервера на данной полке не должен превышеть: 5+2 = 7.
Когда начал мониторить — заметил, что примерно раз в 2-3 минуты, а то и чаще данный параметр подскакивает до 10, а то и выше, правда держится там не долго — меньше 1 секунды.
Правильно ли MS советует оценивать текущую длину очереди диска в случае вот таких LUNов на SAN ?
И в течении какого времени должно быть превышение данного параметра, чтобы это сигнализировало о том что дисковая система не справляется с нагрузкой ?

Для примера попробуем добавить счетчики производительности. Для начала удалите все используемые в данный момент счетчики. Для этого нужно выделить счетчик в области счетчиков и нажать клавишу Delete. После этого вызовите контекстное меню в любой из областей системного монитора и выберите команду Добавить счетчики. Это приведет к отображению диалогового окна, приведенного на рис. 11.2.

Рис. 11.2. Окно добавления счетчиков

С помощью данного окна можно определить, счетчики какого компьютера будут подключаться к консоли (локального или любого другого, подключенного к сети), определить устройство (список Объект), за работой которого вы будете следить, а также определить сами счетчики (переключатель Выбрать счетчики из списка) параметров работы устройства, которые будут отслеживаться. После выбора счетчика в правом окне можно выбрать экземпляр устройства, работа которого будет отслеживаться. На рис. 11.2 отображено только два экземпляра устройства — _Total и 0. Экземпляр 0 определяет первый процессор, установленный в системе, а экземпляр _Total определяет слежение за всеми процессорами, установленными на компьютере (при этом будет выводиться среднее арифметическое данных по работе процессоров). Если на компьютере установлен только один процессор, то экземпляр _Total эквивалентен экземпляру 0, но если бы компьютер содержал большее количество установленных процессоров, то присутствовали бы и другие экземпляры устройств: 1 — для второго процессора, 2 — для третьего процессора и т.д.

ПРИМЕЧАНИЕ

Если значение DWORD-параметра Disable Performance Counters, расположенного в ветви системного реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib, будет равно 1, то будет запрещено добавление счетчиков, а также работа с ActiveX-объектом Системный монитор. Если значение данного параметра будет равно 1, то список счетчиков просто-напросто будет пуст. Аналогичного результата можно добиться, если присвоить DWORD-параметру Updating той же ветви реестра значение, равное 0.

ВНИМАНИЕ

Название экземпляра Total можно изменить на любое другое. Для этого применяется параметр строкового типа TotalInstanceName, расположенный в ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Perflib. При этом следует учитывать, что все счетчики, загруженные до изменения значения параметра TotalInstanceName, работать не будут.

Если просмотреть список объектов, за которыми можно следить, а также количество различных счетчиков, реализованных для них, можно ужаснуться. Что же из этого многообразия выбрать? Частично решить этот вопрос вам поможет кнопка Объяснение, после выбора счетчика и нажатия которой перед вами отобразится диалоговое окно с описанием того, за чем же следит данный счетчик. Вам также могут помочь советы профессионалов, которые предлагают следить за следующими компонентами (если необходимо определить общий уровень производительности компьютера или устройства, которые пора улучшить) компьютера: Процессор, Память, Система и Физический диск. Вкратце рассмотрим наиболее интересные счетчики данных устройств.

ПРИМЕЧАНИЕ

В любом случае, здесь не будут рассмотрены все объекты, счетчики которых можно использовать, так как количество объектов на различных компьютерах может быть разное. Это связано с тем, что любая служба может добавить свои собственные счетчики. Для этого достаточно в параметре строкового типа Library указать библиотеку, содержащую функции работы с новыми счетчиками. Параметр расположен в разделе Performance ветви реестра, хранящей сведения о данной службе (на страницах книги уже несколько раз упоминалось, что настройки служб находятся в отдельных разделах ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services).

Повышенная нагрузка на диски сервера баз данных SQL Server

Можно также удалить возможность работы со счетчиками данного объекта, просто удалив раздел Performance (или переименовав его). Но можно поступить и намного проще — просто запретить работу счетчиков данного объекта. Для этого необходимо в разделе Performance данной службы создать DWORD-параметр Disable Performance Counters и присвоить ему значение 1.

Основные параметры раздела Performance неинтересны и содержат названия функций библиотеки для работы со счетчиками.

Для процессора это следующие счетчики.

% загруженности процессора — в зависимости от экземпляра устройства определяет процент загруженности конкретного процессора или всех процессоров, установленных на компьютере. Аналогичную информацию можно просмотреть и в Диспетчере задач Windows (на вкладке Быстродействие). Если процессор постоянно загружен на 70-90%, значит, пора покупать более мощный процессор.

% времени прерываний — в зависимости от экземпляра устройства определяет процент времени загруженности конкретного процессора или всех процессоров, установленных на компьютере, в течение которого процессор обрабатывает различные аппаратные прерывания. Если показания данного счетчика колеблются в пределах 25-35%, стоит также подумать о более мощном процессоре.

Для памяти это следующие счетчики.

Обмен страниц в секунду — определяет количество страниц, считываемых или записываемых на диск в течение одной секунды. Как правило, страницы записываются на диск в том случае, если оперативная память компьютера исчерпана и системе приходится использовать файл подкачки. Иными словами, чем меньше показания данного счетчика, тем лучше. В случае большого объема обмена страниц (имеется в виду обмен страницами в течение всего сеанса работы пользователя, а не временный обмен, который может быть ассоциирован записью информации на диск (а следовательно, не отображает реальную картину загруженности памяти)) рекомендуется купить дополнительную планку оперативной памяти.

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

Доступно байт — определяет количество свободной в данный момент виртуальной памяти. Если показания этого счетчика постоянно колеблются в пределах 10-20 Мбайт, рекомендуется купить дополнительные планки оперативной памяти.

Для физического диска это следующие счетчики.

% активности диска — определяет процент времени, которое жесткий диск тратит на удовлетворение запросов на чтение/запись данных. Если показания данного счетчика долгое время колеблются в районе 80-100%, то необходимо подумать над покупкой более быстрого жесткого диска или дополнительного объема оперативной памяти.

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

Для системы это следующий счетчик.

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

ПРИМЕЧАНИЕ

Названия счетчиков, а также описания их работы на разных компьютерах могут отличаться. Это связано с тем, что сведения о названиях счетчиков и их описания хранятся не в файле библиотеки, а непосредственно в реестре. Для их хранения применяются два параметра REG_MULTI_SZ-типа ветви реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\019 (для англоязычной версии операционной системы используется конечный подраздел 009). Данная ветвь реестра содержит два параметра — Counter и Help. Первый из них определяет названия счетчиков, а второй — их описание.

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

Счетчик ошибок страницы в Диспетчере задач.

Что это такое? Как понимать его показания? В справке не описано.
Это нормально, когда у программы он растет со скоростью 2-3 тыс единиц в секунду?

> Что это такое? Как понимать его показания?

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


> Это нормально, когда у программы он растет со скоростью
> 2-3 тыс единиц в секунду?

Нет Пора идти в магазин за оперативой

> [0] DVM ©   (01.05.07 13:42)


> Что это такое?

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

> Это нормально, когда у программы он растет со скоростью
> 2-3 тыс единиц в секунду?

не очень (хотя тут нужно смотреть конкретную ситуацию), нужно побольше ОЗУ.

> Это нормально, когда у программы он растет со скоростью
> 2-3 тыс единиц в секунду?

Я счас подергал окошко оперы за края, погонял апатчь, до 5 тышь в секунду доходило. Вот же уродский оптимайзер памяти у винды Так что пара тысячь в секунду — вполне нормально.

Я вот попытался локализовать в своей программе место, которое более всего увеличивает счетчик — оказалось это место в FastDIB. А именно:

Вот такие преобразования моя программа делает до 200 в секунду.
Если я комментирую преобразование, то счетчик не растет практически.

Памяти 100% достаточно. Ее количество не влияет на этот счетчик. 2Гб ее.

ну если это не дает лишней нагрузки на CPU — можно смело забить, если нагрузку дает — исключить вызов FastDIB2Bitmap.

щас может тупой вопрос задам:)
А так — procedure FastDIB2Bitmap(Src:TFastDIB; var Dst:TBitmap);
?


> ну если это не дает лишней нагрузки на CPU

Не нагрузки не дает абсолютно. Память не растет, никакие ресурсы не уменьшаются.


> щас может тупой вопрос задам:)
> А так — procedure FastDIB2Bitmap(Src:TFastDIB; var Dst:TBitmap);
>
> ?

Все то же самое.

> [6] antonn ©   (01.05.07 16:43)

в Делфи идентификатор объекта является указателем на объект )


> в Делфи идентификатор объекта является указателем на объект
> )

Я вот попытался локализовать в своей программе место, которое более всего увеличивает счетчик — оказалось это место в FastDIB.

По логике, нужно сначала всё освободить, потом присваивать Handle.

Возможно, и освобождать необязательно, во всяком случае в примере Bumpmap сделано так:

procedure TBumpForm.SetThumbnail(Image:TImage; Bmp:TFastDIB);
var
 Tmp: TFastDIB;
begin
 Tmp:=TFastDIB.Create;
 Tmp.SetSize(105,105,Bmp.Bpp);
 if Tmp.Bpp=8 then
 begin
   Tmp.Colors^:=Bmp.Colors^;
   Tmp.UpdateColors;
 end;

 Bilinear(Bmp,Tmp);
 Tmp.FreeHandle:=False;
 Image.Picture.Bitmap.Handle:=Tmp.Handle;
 Tmp.Free;
 Image.Refresh;
end;

А вообще, откуда надобность выполнять подобное преобразование 200 раз/c? Может лучше выкинуть TBitmap и выполнять все операции с TFastDIB? А то мне сейчас лень смотреть, но подозреваю, что в TBitmap.SetHandle куда больше действий, чем просто присвоение переменной.

Ещё, имейте в виду, что FastGate — это не оригинальный FastLIB.

Длина очереди диска на SQL сервере.

Автор этого модуля уже допускал ляпы при "улучшении" библиотеки, так что аккуратнее с ним (хотя, строго говоря, и "оригинал" не безгрешен).


> А вообще, откуда надобность выполнять подобное преобразование
> 200 раз/c?

Да есть вот задачи. Видеонаблюдение.


> Может лучше выкинуть TBitmap и выполнять все операции с
> TFastDIB?

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


> TBitmap.SetHandle куда больше действий, чем просто присвоение
> переменной.

Да, там намного больше действий.


> Sapersky

Не подскажите, как правильно скопировать один TFastDIB в другой. Не Assign(), а именно копирование? У меня вот какая штука:

Во вторичном потоке происходит декодирование JPEG в TFastDIB. Далее этот FastDIB с сообщением высылается в основной поток и там преобразуется в TBitmap, который и отрисовывается при необходимости в основном потоке по WM_PAINT. Так сделано сейчас. Так вот получается, что и основной поток и вторичный на деле же работают с одним и тем же хэндлом одного и того же битмапа по сути. Ведь FastDIB2Bitmap просто присваивает хэндл. И пока первичный поток отрисовывает его на окне вторичный ведь может и поменять его содержимое. Или я неправ? Так можно делать или надо полностью копироваить битмап в основной поток и там работать с ним?

Хм, а я кажеться понял почему так много ошибок доступа в этом месте. Потому что по Dst фактически заново создаеться, под новый битмап выделяеться память. А менеджер памяти в виндовсе имеет такое замечательное свойство, не выделять память физически, а лишь помечать страницы как зарезервированые. А вот когда уже на новый хэндл уже копируеться изображение со старого, идет непосредственное обращение к страницам, и они выделяются физически (в ОП), а счетчик ошибок доступа мотает. Так что эта строчка имхо — большая дыра в производительности. Попробуй как минимум создавать TBitmap как DIB, как максимум, здесь вобще нужно логику программы переделывать.

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

Скорее всего нет. Как я понимаю невозможно преобразовать DDB в DIB не выделив под него второй хэндл.


> Потому что по Dst.Handle:=Src.Handle; Dst фактически заново
> создаеться, под новый битмап выделяеться память

Да, получается, что так.


> Так что эта строчка имхо — большая дыра в производительности.

Может быть, но это далеко не самая тяжелая операция. Декодирование из JPEG во вторичных потоках занимает в тысячи раз больше времени.


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

Я вот попробовал переделать на TFastDIB в основном потоке — проблема с ошибками страницы исчезла.

Возникла другая проблема — как мне правильно передать с сообщением переменную типа TFastDIB из вторичного потока в первичный с сообщением и присвоить полченное в основном потоке значение переменной в первичном потоке.

Просто присваиванием очевидно нельзя — возникают сразу утечки GDI ресурсов (вот здесь отличие от TBITMAP).

Не подскажите, как правильно скопировать один TFastDIB в другой. Не Assign(), а именно копирование?

Dst.MakeCopy(Src, True); // делается SetSize и Move
Или можно (при UseGDI = True) установить размер Dst = Src, потом
Src.Draw(Dst.hDC, 0, 0); // фактически BitBlt
удобно тем, что конвертирует битмапы разных форматов, хотя, как правило, не очень качественно. Впрочем, для этого есть FConvert.pas.

И пока первичный поток отрисовывает его на окне вторичный ведь может и поменять его содержимое. Так можно делать или надо полностью копироваить битмап в основной поток и там работать с ним?

Если вторичный поток не изменяет размер битмапа, т.е. не портит указатель/Handle, то, наверное, можно его спокойно рисовать, в крайнем случае нарисуется половина старого, половина нового. Хотя сам не пробовал, не знаю, как функции GDI отнесутся к тому, что кто-то будет писать в используемую ими область памяти. Можно на всякий случай прицепить к битмапу крит. секцию.
Если изменяет — тогда однозначно нужна или синхронизация, или копирование, или и то, и другое.

Просто присваиванием очевидно нельзя — возникают сразу утечки GDI ресурсов (вот здесь отличие от TBITMAP).
Что такое "присваивание"?
Если Assign — возможно, "аффтар" FastGate с ним напортачил в новой версии, пытаясь добиться того же поведения, что и у TBitmap. В оригинале это поведение довольно специфическое — битмап-источник уничтожается.
В общем, лучше "присваивание" делать как Dst := Src с соответствующей синхронизацией или MakeCopy.


> Вот же уродский оптимайзер памяти у винды

Слону, сам понимаешь, пофиг.


> Sapersky   (02.05.07 00:38) [16]

Большое спасибо. Метод TFastDib.MakeCopy() действительно то что нужно.

Счетчики ошибок страницы не растут. Утечек тоже нет. Как обстоят дела с производительностью такого решения выясняю.

Записки IT специалиста

Производительность дисковой подсистемы — краткий ликбез.

  • Автор: Уваров А.С.
  • 08.02.2013

hdd-performance-000.jpg

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Прежде чем говорить о производительности вспомним как устроен жесткий диск, так как многие особенности и ограничения HDD заложены именно на физическом уровне. Не вдаваясь в подробности, можно сказать что диск состоит из одной или нескольких магнитных пластин над которыми расположен блок магнитных головок, пластины в свою очередь содержат намагниченные концентрические окружности — цилиндры (дорожки), которые в свою очередь состоят из небольших фрагментов — секторов. Сектор — минимальное адресуемое пространство диска, его размер традиционно составляет 512 байт, хотя некоторые современные диски имеют более крупный сектор размером в 4 Кбайт.

Во время вращения диска сектора проходят мимо блока магнитных головок, которые осуществляют запись или чтение информации. Скорость вращения (угловая скорость) диска в конечный момент времени величина постоянная, однако линейная скорость различных участков диска различна. У внешнего края диска она максимальна, у внутреннего — минимальна. Рассмотрим следующий рисунок:

hdd-performance-001.jpg

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

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

Теперь перейдем на более высокий уровень — уровень файловой системы. Файловая система оперирует более крупными блоками данных — кластерами. Типичный размер кластера NTFS — 4 Кб или 8 секторов. Получив указание считать определенный кластер диск произведет чтение 8 последовательных секторов, при последовательном расположении данных операционная система даст указание считать данные начиная с кластера 100 и заканчивая кластером 107. Данное действие будет представлять собой одну операцию ввода-вывода (IO), максимальное количество таких операций в секунду (IOPS) конечно и зависит от того, сколько секторов пройдут мимо головки за единицу времени (а также от времени позиционирования головки). Скорость обмена данными измеряется в МБ/с (MBPS) и зависит от того, какое количество данных будет считано за одну операцию ввода-вывода. При последовательном расположении данных скорость обмена будет максимальной, а количество операций ввода-вывода минимально.

hdd-performance-002.jpg

Здесь будет не лишним вспомнить о таком параметре как плотность записи, которая выражается в площади необходимой для записи 1 бита данных. Чем выше этот параметр, тем больше данных может вместить одна пластина и тем выше скорость линейного обмена данными. Этим объясняются более высокие скоростные характеристики современных винчестеров, хотя технически они могут ничем не отличаться от более старых моделей. Рисунок ниже иллюстрирует данную ситуацию. Как несложно заметить, при более высокой плотности записи за один и тот-же промежуток времени, при той же самой скорости вращения будет считано/записано большее количество данных

hdd-performance-003.jpg

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

hdd-performance-004.jpg

Следует отметить, что для ОС и многих серверных задач (СУБД, виртуализация и т.п.) характерен именно случайный доступ с размером блока в 4 Кб (размер кластера), при этом основным показателем производительности будет не скорость линейного обмена данными (MBPS), а максимальное количество операций ввода-вывода в секунду (IOPS). Чем выше этот параметр, тем большее количество данных может быть считано в единицу времени.

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

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

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

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

hdd-performance-005.jpg

Реальная производительность жесткого диска — это всегда баланс между скоростью обмена данными и количеством операций ввода вывода. Для последовательного чтения характерен большой размер пакета данных, который считывается за одну операцию ввода вывода. Максимальная скорость (MBPS) будет достижима при последовательном чтении секторов с внешнего края диска, количество операций ввода-вывода (IOPS) будет при этом минимально — дорожки длинные, позиционировать головку нужно реже, данных при этом считывается больше. На внутренних дорожках линейная скорость будет ниже, количество IO — выше, дорожки короткие, позиционировать головку нужно чаще, данных считывается меньше.

При случайном доступе скорость будет минимальна, так как размер пакета данных очень мал (в худшем случае кластер) и производительность упрется в максимально доступное количество IOPS. Для современных массовых дисков это значение равно около 70 IOPS, нетрудно посчитать, что при случайном доступе с размером пакета в 4 Кб мы получим максимальную скорость не более 0,28 MBPS.

Непонимание этого момента часто приводит к тому, что дисковая подсистема оказывается бутылочным горлышком, которое тормозит работу всей системы. Так, выбирая между двумя дисками с максимальной линейной скоростью в 120 и 150 MBPS, многие не задумываясь выберут второй, не посмотрев на то, что первый диск обеспечивает 70 IOPS, а второй всего 50 IOPS (вполне характерная ситуация для экономичных серий), а потом будут сильно удивляться тому, почему «более быстрый» диск сильно тормозит.

Что будет, если количества IOPS диска окажется недостаточно чтобы обработать все запросы? Возникнет очередь дисковых запросов. На практике все несколько сложнее и очередь диска будет возникать даже в том случае, когда IOPS достаточно. Это связано с тем, что различные процессы, обращающиеся к диску, имеют разный приоритет, а также то, что операции записи всегда имеют приоритет над операциями чтения. Для оценки ситуации существует параметр длина очереди диска, значение которого не должно превышать (по рекомендациям Microsoft)

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

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал

Мониторинг SharePoint 2013/2016: ключевые счетчики производительности

Здравствуйте! Меня зовут Любовь Волкова, я системный архитектор департамента разработки бизнес-решений. Основная моя специализация — внедрение, разработка решений, техническая поддержка корпоративных порталов SharePoint. Многолетний опыт работы позволяет выделить основные закономерности, влияющие на производительность серверов, входящих в состав типовой фермы.

Цель этого поста — помочь администраторам корпоративных порталов SharePoint в составлении эффективных планов обслуживания серверов. В тексте ниже собраны счетчики производительности, рекомендуемые нами для включения в планы ежедневного обслуживания серверов фермы SharePoint 2013/2016, а также даны примеры из практики. Данные о счетчиках вы можете использовать для ручной настройки и анализа показателей панели экспресс-мониторинга, а также в ходе автоматизации получения уведомлений в случае превышения счетчиками пороговых значений в течение периода времени, продолжительность которого зависит от требований и стандартов, принятых в организации.

Системные счетчики

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

Процессор

% Загруженности процессора (_Total)\% Processor Time

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

Необходимо отслеживать производительность и поддерживать загруженность всех процессоров на уровне не выше 75 %. При более высоких уровнях загруженности система не сможет справиться с внезапными всплесками активности. Это также позволит избежать «эффекта домино», когда сбой одного компонента вызовет неисправность других компонентов. Например, если у вас три веб-сервера, необходимо убедиться, что средняя загрузка ЦП на всех серверах меньше 60 %, чтобы в случае сбоя одного из них два других процессора смогли обработать дополнительную нагрузку.

Прерываний/с (Interrupts/sec)

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

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

Система

Длина очереди процессора (Processor Queue Length)

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

Этот счетчик отражает текущее значение и не является средним значением по некоторому интервалу времени.

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

Процесс

Рабочий набор (Working Set) для экземпляра _Total

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

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

Рекомендуемая настройка для файла подкачки — значение «ОЗУ + 10».

Если происходит удаление из рабочих наборов, необходимо добавить счетчик «Процесс (*)\ Рабочий набор», чтобы узнать, какие процессы подвержены проблеме.

Рекомендуется дополнительно сравнивать показания этого счетчика со значением счетчика «Память\Резидентных байт системного кэша», чтобы определить, не происходит ли общесистемное удаление страниц из рабочих наборов.

% загруженности процессора (% Processor Time) для процессов SharePoint

Показания данного счетчика необходимо анализировать в паре с данными системного счетчика «Процессор\% загруженности процессора» для объекта _Total. Если загруженность всех процессоров превышает пороговые значения, то данные о загрузке процесса ASP.Net позволят определить, не является ли этот процесс источником проблемы.

Процессы SharePoint, которые рекомендуется обязательно включать в мониторинг:

  • w3wp;
  • mssearch;
  • noderunner;
  • miiserver.
Байт исключительного пользования (Private Bytes) для процессов SharePoint

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

Этот счетчик можно использовать для выявления утечек памяти для процессов.

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

Байт виртуальной памяти (Virtual Bytes) для процессов SharePoint

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

Применяется для определения того, не используют ли процессы большой объем виртуальной памяти.

Счетчик потоков (Handle Count) для процесса w3wp

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

Сетевой адаптер

Всего байт/с (Bytes Total/Sec)

Скорость отправки и получения данных через сетевой адаптер. Если эта скорость превышает 40-50 процентов пропускной способности сети, может потребоваться дополнительное выяснение причин.

Логический диск (Disk)

Средняя длина очереди диска (Avg. Disk Queue Length)

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

Средняя длина очереди чтения диска (Avg. Disk Read Queue Length)

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

Средняя длина очереди записи на диск (Avg. Disk Write Queue Length)

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

Скорость чтения с диска (байт/с) (Disk Reads/sec)

Скорость, с которой происходит передача данных с этого диска при выполнении операций чтения.

Скорость записи на диск (байт/с) (Disk Writes/sec)

Скорость, с которой происходит передача данных на этот диск при выполнении операций записи.

Пример показаний счетчиков по дисковой подсистеме
Средняя длина очереди диска Средняя длина очереди чтения диска Средняя длина очереди записи на диск Скорость чтения с диска (байт/с) Скорость записи на диск (байт/с)
0,015 0,004 0,011 0,723 9,578

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

Память

Доступно Мб (Available Mbytes)

Этот счетчик показывает объем физической памяти, доступный для выделения. Если памяти недостаточно, файл подкачки будет использоваться более интенсивно, а число ошибок страниц в секунду увеличится. Если значение данного счетчик менее 2 GB на веб-сервере, нужно увечить память.

% использования выделенной памяти (% Committed Bytes In Use)

Процентное отношение объема выделенной памяти (Committed Bytes) к пределу выделенной памяти (Commit Limit). Эта величина отражает реально используемый объем доступной виртуальной памяти. Необходимо учитывать, что предел выделенной памяти может быть изменен, если файл подкачки (страничный файл) будет увеличен. Эта величина представляет собой конкретное текущее значение, и не является средним значением по некоторому интервалу времени.

Пороговое значение: 70% для предупреждения, более 90% — критическое. При повышенных значениях достаточно увеличить объем памяти.

Ошибок страницы/сек (Page Faults/sec)

Счетчик показывает среднее число ошибок страниц в секунду. Измеряется количеством неудачных считываний страниц в секунду. Ошибки страниц возникают в случае, когда происходит процесс запроса страницы в памяти, и далее система не может найти его в запрашиваемом месте. Если запрашиваемая страница не найдена в памяти, такая ошибка называется soft page fault. Если запрашиваемая страница должна быть восстановлена с диска, такая ошибка называется hard page fault.

Ввод страниц/сек (Pages Input/sec)

Ввод страниц/сек — это количество страниц, считанных с диска при разрешении ссылок на страницы, которые отсутствуют в памяти в момент обработки ссылки. Ошибка страницы возникает, когда поток ссылается на страницу виртуальной памяти, которая не находится в рабочем наборе оперативной памяти. Этот счетчик учитывает также подкачку (страничный обмен), выполняемый системной кэш-памятью для доступа к данным, запрашиваемым приложениями. Это важный источник сведений для выявления чрезмерной нагрузки на память и возникающего вследствие этого чрезмерного страничного обмена. Рекомендуемое пороговое значение предупреждения – 1000.

Чтение страниц/сек (Page Reads/sec)

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

Счетчики Ввод страниц/сек и Чтение страниц/сек нужно рассматривать совместно. Первый из них содержит количество страниц, прочитанных с диска, а второй — количество операций чтения, совершенных при подкачке. Эти счетчики учитывают Hard Page Faults — операции обращения к памяти, при которых искомая страница данных не находится в физической памяти. Таким образом, если Обмен страниц/сек, Чтение страниц/сек, Ввод страниц/сек постоянно находятся на высоком уровне, то можно предположить, что операционная система активно работает с файлом подкачки, что, в свою очередь, говорит о недостатке памяти. Ввод страниц/сек значение данного счётчика должно быть выше или равно значения Чтение страниц/сек.

Ошибок кэш-памяти/с (Cache Faults)

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

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

Обмен страниц/сек (Pages/sec)

Скорость чтения и записи страниц на диск для разрешения серьезных сбоев страниц. Эта величина является суммой величин Ввод страниц/сек и Вывод страниц/сек. Показания счетчика являются основным указателем типов сбоев, которые приводят к задержкам во всей системе. Он показывает количество полученных страниц для компенсации сбоев страниц в кэше файловой системы. Эти страницы обычно требуются приложениями. Значение этого счетчика не должно превышать 10.

Байт в невыгружаемом пуле (Pool Nonpaged Bytes)

Размер (в байтах) невыгружаемого пула. Невыгружаемый пул представляет собой область виртуальной памяти системы, применяемую для объектов, которые не могут быть записаны на диск и должны оставаться в физической памяти на все время своего существования. Этот счетчик отражает только текущее, а не среднее значение.

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

Показания счетчика не должны превышать минимального из двух значений, — 2x ОЗУ и 128 Гб.

Общие рекомендации по анализу показателей счетчиков памяти

Если \Память\Обмен страниц/сек, \Память\Чтение страниц/сек, Память\Ввод страниц/сек постоянно находятся на высоком уровне, а \Память\Ошибок кэш-памяти/с на низком, то можно предположить, что операционная система активно работает с файлом подкачки, что, в свою очередь, говорит о недостатке памяти. Однако если \Память\Ошибок кэш-памяти/с тоже высок, то, скорее всего, ситуация вызвана активной работой с большими файлами, отображаемыми в память. Обычно это не занимает много времени.

Пример показаний счетчиков памяти
Доступно Мб % исполь-
зования выделенной
памяти
Ошибок страницы
Ввод страниц
Чтение страниц
Обмен страниц
Байт в невы-
гружа-
емом пуле
6312,758 65 605,378 15,936 1,105 15,995 115352406

Показатели среднего объема физической памяти в норме. Показаний к увеличению ее объема нет. Показатель среднего процента используемого объема физической памяти в норме (65%), но приближается к пороговому значению 70%.

Наблюдаются относительно высокие показатели ошибок при обращении к страницам памяти в сочетании с малым кол-вом операций чтения, совершенных при подкачке. Показания счетчика Ввод страниц/сек в норме и существенно ниже порогового значения. Значения счетчика Обмен страниц/сек (15+) превышают пороговое значение 10. Можно предположить, что система периодически активно использует файл подкачки. Одной из наиболее часто встречающихся причин такого поведения системы, — загрузка на портал файлов больших объемов.

Файл подкачки

% использования (% Used)

Процент использования файла подкачки (страничного файла) в настоящий момент.

% использования (пик) (% Used Peak)

Максимальное использование файла подкачки (страничного файла) в процентах.

Страничный файл сервера, также известный как файл подкачки, содержит «виртуальные» адреса памяти на диске. Ошибки страницы возникают, когда процесс нужно остановить и дождаться, пока необходимые «виртуальные» ресурсы будут скопированы с диска в память. Их будет больше, если объема физической памяти недостаточно.

Отметим, что для SharePoint рекомендуется настроить размер файла подкачки 150% от ОЗУ. Абсолютным минимумом должно быть значение ОЗУ+1 Мб.

Отслеживайте объем физической памяти, доступный для выделения. Если памяти недостаточно, файл подкачки будет использоваться более интенсивно, а число ошибок страниц в секунду увеличится.

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

ASP.Net и Приложение ASP.Net

ASP.Net. Перезапусков приложения (Application Restarts)

Число перезапусков приложения за время жизни веб-сервера. Значение этого счетчика увеличивается после каждого возникновения события Application_OnEnd (завершение работы веб-приложения). Перезапуск приложения может произойти в результате изменений в файле Web.config, изменения сборок в каталоге \Bin приложения или большого числа изменений страниц веб-форм. Неожиданное увеличение этого значения может быть вызвано тем, что выключение веб-приложение произошло в результате непредвиденных обстоятельств. В этом случае необходимо как можно быстрее провести анализ причин возникновения неполадок. Значение данного счетчика должно стремиться к нулю.

ASP.Net. Отклонение запросов (Requests Rejected)

Общее число запросов, отклоненных из-за переполнения очереди запросов. Отклонение запросов часто выполняется из-за недостатка ресурсов сервера для их обработки. Это значение соответствует числу возвращенных кодов ошибки 503 HTTP, означающей, что сервер занят. Примеры причины возникновения недостатков ресурсов: большое число запросов к веб-серверу, большое количество медленных запросов (неоптимизированных) к СУБД, не корректно отрабатывают компоненты решений, написанные сторонними разработчиками. Таким образом, чтобы выявить причину возникновения недостатка ресурсов на сервере и устранить её, нужно провезти более детальный анализ веб-сервера задействовав дополнительный инструментарий.

ASP.Net. Запросов в очереди (Requests Queued)

Веб-приложение MS SharePoint предоставляет стандартные блоки для HTML-страниц, которые отображаются в браузере пользователя через HTTP и требуют предварительного получения и обработки данных (веб-части, пользовательские элементы управления и т.д.). Для подготовки конечного результата обработки данных, который предоставляется пользователю на веб-странице корпоративного портала, может требоваться один или несколько запросов к базе данных, файловой системе и пр. Этот счетчик показывает число запросов, ожидающих обработки. Максимальное значение по умолчанию для этого счетчика 5000. Этот параметр можно изменить в файле Machine.config. Значение данного счетчика не должно превышать 70-75% от порогового значения, т.е. 3500-3750.

ASP.Net. Перезапусков рабочего процесса (Worker Process Restarts)

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

Значение данного счетчика должно стремиться к нулю.

ASP.Net. Время ожидания для запроса (Request Wait Time)

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

Приложение ASP.Net. Запросов/сек (Requests/Sec)

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

Пример показаний счетчиков ASP.Net и Приложение ASP.Net
Application Restarts Requests Rejected Requests Queued Worker Process Restarts Request Wait Time Requests/Sec
2,175 0 0 0 0 0,153

Показатели данных практически всех счётчиков ASP.Net стремятся к нулю в сочетании с небольшими значениями кол-ва запросов в секунду. Следует обратить внимание на высокие показатели кол-ва перезапусков веб-приложения (счетчик Application Restarts). Можно предположить, что пользователи периодически испытывают проблемы с доступностью веб-ресурса, поэтому администратору корпоративного портала необходимо выяснить и устранить причины частых сбоев в работе веб-приложения.

Память CLR .Net (Memory CLR .Net)

Сборов мусора

Сборов мусора для поколения 0 (# Gen 0 Collections) — число извлечений объектов поколения 0 (т. е. объектов, добавленных последними) сборщиком мусора с момента запуска приложения.

Сборов мусора для поколения 1 (# Gen 1 Collections) — число извлечений объектов поколения 1 сборщиком мусора с момента запуска приложения.

Сборов мусора для поколения 2 (# Gen 2 Collections) — число извлечений объектов поколения 2 сборщиком мусора с момента запуска приложения. Этот счетчик увеличивается на 1 после завершения сбора мусора для поколения 2 (что также называют полным сбором мусора).

При мониторинге необходимо обращать внимание на отношение «сборов мусора для поколения 0: сборов мусора для поколения 1: сборов мусора для поколения 2», следить за тем, чтобы число сборов мусора для поколения 2 не сильно превышало число сборов для поколения 0. Оптимальный коэффициент — 2.

% времени в GC (% Time in GC)

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

Исключения CLR.Net (Microsoft .NET CLR Exceptions)

Число исключений.сек (Exceps thrown/sec)

Число исключений, генерируемых в секунду. В этом счетчике учитываются как обработанные, так и необработанные исключения. Предполагается, что исключения возникают лишь в редких случаях и не происходят при нормальном ходе выполнения программы; данный счетчик был введен для того, чтобы сигнализировать о потенциальных проблемах производительности в случаях, когда частота генерации исключений слишком велика (>100). Этот счетчик не обеспечивает усреднение по времени; он показывает отношение разности между значениями, наблюдаемыми в двух последних измерениях, к интервалу между измерениями.

Значение данного счетчика должно стремиться к нулю.

Веб-служба (Web Service)

Показания счетчиков из данной группы рассматриваются в привязке к конкретному экземпляру объекта, — веб-приложению корпоративного портала, например, — «SharePoint – 80».

Количество текущих подключений

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

Количество запросов расширения ISAPI в секунду (ISAPI Extension Requests/sec)

ISAPI (Internet Server Application Programming Interface) — это набор интерфейсов, предоставляемых веб-сервером MS IIS (Internet Information Services) для написания приложений, взаимодействующих с этим сервером и расширяющих его возможности. Приложения ISAPI представляют собой динамически подключаемые библиотеки (Dynamic Link Library, DLL), напрямую взаимодействующие с API IIS. Приложения ISAPI загружаются и выполняются в адресном пространстве IIS, поэтому серверу не нужно создавать новый процесс при каждом HTTP-запросе. Поскольку Windows загружает динамически подключаемую библиотеку один раз при первом вызове функции в DLL, то приложение ISAPI остается загруженным и не удаляется, пока не будет остановлен/выключен веб-сервер (если включено кэширование ISAPI), либо приложение не будет выгружено явным образом (если кэширование выключено).

Показания счетчика дает представление о частоте запросов расширения ISAPI, полученных веб-службой.

Счетчики SharePoint Foundation

SQL Query Executing time

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

  1. Неоптимизированные планы выполнения T-sql запросов, которые могут быть задействованы в коде решения;
  2. Вызов хранимых процедур, с помощью которых могут формироваться различные активности для пользователя портала;
  3. Степень оптимизации производительности индекса.
Executing SQL Queries

Счетчик возвращает число текущих выполняемых SQL-запросов. Значение счетчика существенно зависит от специфики реализованного на портале функционала. Анализ значений должен обязательно проводиться с учетом специфики обработки контента: работа с базовыми списками и библиотеками, использование группировок и фильтров в представлении данных, полей подстановки, обращение к спискам с внешними данными, обработка запросов к внешним источникам данных или обработка списков с большим кол-вом элементов и многое другое.

Executing Time/Page Request

Счетчик возвращает среднее время выполнения (в мс) запросов веб-страниц, которые были обработаны за время сбора данных. Статистика включает данные о запросе динамических веб-страниц, построение которых обеспечивается ASP.Net.

Current Page Requests

Значение счётчика показывает количество текущих запросов, которые находятся в обработке. Они могут существенно отличаться в разные периоды и зависят от текущего кол-ва обращений к порталу SharePoint. Наиболее важным является анализ показаний в часы пиковой нагрузки в сочетании с показателями о среднем выполнении запросов веб-страниц (Executing Time/Page Request) и данных о числе текущих выполняемых SQL-запросов.

Reject Page Requests Rate

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

Incoming Page Requests Rate

Значение счетчика отображает о количестве входящих запросов за последнюю секунду. Аналогично Current Page Requests в привязке к строго определенному интервалу времени – 1с.

Active Threads

Счетчик возвращает число потоков, которое выполняется в коде SharePoint в настоящее время. Показатели зависят от многих факторов: процессор и его характеристики, показателей на базовые подсистемы (память, процессор, сеть, дисковые устройства), текущую нагрузку на портал. Инициация дополнительных потоков может быть инициирована программным образом в коде в составе решений под платформу SharePoint.

Пример показаний счетчиков SharePoint Foundation
SQL Query Executing time Executing SQL Queries Executing Time/Page Requests Current Page Request Reject Page Requests Rate Incoming Page Requests Rate IActive Threads
0,048 0,051 0,197 1,581 0 0,396 1,595

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

Мониторинг на SQL Server

Контроль дисковой подсистемы

Microsoft SQL Server использует вызовы системных функций ввода-вывода операционной системы Microsoft Windows Server для выполнения дисковых операций чтения и записи. SQL Server определяет, когда и как выполнять дисковые операции ввода-вывода, но базовые операции ввода-вывода выполняет операционная система Windows.
Далее описывается минимальный набор счетчиков, наблюдение за которыми рекомендуется включить в планы ежедневного обслуживания.

Физический диск\Среднее время чтения с диска (Physical Disk\Avg. Disk sec/read)

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

Физический диск\Среднее время записи на диск (Physical Disk\Avg. Disk sec/write)

Среднее время записи на диск — это время в секундах, затрачиваемое в среднем на одну операцию записи данных на диск. Базовые показатели данного счетчика не должны превышать 15 мс.

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

Для OLTP-систем среднее значение должно быть меньше 15 мс с допустимыми пиками до 25 мс. Чем меньше времени требуется для чтения или записи данных, тем быстрее будет функционировать система.

Контроль использования ЦП

Контроль экземпляра Microsoft SQL Server позволяет определить, находятся ли уровни загрузки ЦП в стандартных диапазонах. Постоянный высокий уровень использования ЦП может указывать на необходимость обновления ЦП или на необходимость добавления нескольких процессоров. Оптимизация работы приложения может снизить уровень загрузки ЦП. Процессорная система в наибольшей степени нагружается операциями:

  • компиляции и рекомпиляции планов выполнения;
  • сортировки;
  • хеширования.
<Экземпляр SQL Server>SQL Statistics\SQL Compilations/sec

Компиляций SQL, выполненных за секунду. Указывает число раз, когда вводился путь компиляции кода. Включает операции компиляции, вызванные повторной компиляцией на уровне инструкций в SQL Server. Объект SQL Server «статистика SQL в Microsoft SQL Server» обеспечивает работу счетчиков для наблюдения компиляции и типов запросов, отправляемых экземпляру SQL Server. Наблюдение за числом компиляций и повторных компиляций запросов и числа пакетов, полученных экземпляром SQL Server, дает представление о том, как быстро SQL Server выполняет запросы пользователей и насколько эффективно их обрабатывает оптимизатор запросов. Компиляция занимает в обработке запроса значительную часть времени. Чтобы сэкономить на стоимости компиляции, компонент Database Engine сохраняет компилированный план запроса в кэше запросов. Целью кэширования является снижение числа компиляций путем сохранения уже откомпилированных запросов для дальнейшего повторного использования, избавляя от необходимости повторной компиляции аналогичных запросов, которые могут поступить позже. Однако каждый уникальный запрос должен быть скомпилирован хотя бы однажды. Компиляция запросов может быть вызвана следующими факторами:

  • Изменением схемы, включая базовые изменения (добавление в таблицу столбцов или индексов) или статистической схемой (вставка или удаление значительного числа строк в таблице);
  • Изменением среды (инструкцией SET). Изменениями параметров сеанса (например, повторную компиляцию запроса может вызвать предложение ANSI_PADDING или ANSI_NULLS).
<Экземпляр SQL Server>SQL Statistics \Batch Requests/sec

Счетчик указывает количество получений потоков из планировщиков операционной системы (не из планировщиков SQL) для выполнения операций для других потоков в состоянии ожидания. Для счетчика «Batch Requests/sec» используется пороговое значение, приблизительно в 5000 раз большее количества процессоров в сервере. Это значение также может быть высоким в системах с включенной гиперпоточностью и невысокой загрузкой ЦП.

<Экземпляр SQL Server>SQL Statistics\SQL ReCompilations/sec

Среднее число рекомпиляций в секунду. Чем меньше значение этой характеристики, тем лучше.

<Экземпляр SQL Server>Access Methods\Workfiles Created/sec. Workfiles

Workfiles — это часть страниц файла данных, выделенных для внутренних нужд SQL Server. SQL Server активно использует Workfiles для выполнения операций хеширования и хранения промежуточных результатов хеширования. Большое количество создаваемых Workfiles может косвенно указывать на отсутствие индексов, которые может использовать SQL Server для выполнения операций соединения таблиц, в результате чего он вынужден выполнять соединения таблиц через хеширование. Норма на соотношение Workfiles Created/sec к Batch Requests/sec составляет не более 20%. Workfiles создаются во временной базе для обработки запросов, которые слишком велики для размещения в оперативной памяти.

Процессор\Длина очереди процессора (Processor\Processor Queue Length)

Показывает количество потоков, ожидающих выполнения на процессоре. Управление работой SQL Server осуществляется с помощью планировщиков в механизме СУБД, где сервер помещает в очередь и обрабатывает собственные запросы. Поскольку работа SQL Server управляет им самим, он использует только один поток ЦП для каждого логического процессора. Это означает, что в очереди процессора системы, предназначенной для SQL Server, должно находиться минимальное количество потоков.

Пример показаний счетчиков мониторинга ЦП
Batch Requests
/sec
SQL Compilations
/sec
SQL ReCompilations
/sec
Workfiles Created
/sec
Processor Queue Length
19,998 0,675 0,006 1,267 0,151

Расчет значений, на основании которых можно выявить одну из предпосылок перегрузки процессоров:

  • Соотношение между SQL Compilations/sec и Batch Requests/sec
    0,6/19 = 0.03
    Показывает, что в 3% случаев выполнения процедур выполняются компиляции новых запросов. Это говорит о том, что в БД присутствует минимальное число динамических запросов. Рекомендуемое значение SQL Compilations/sec должно составлять менее 10% от значения Batch Requests/sec. Показатель в пределах нормы.
  • Соотношение между SQL ReCompilations/sec и SQL Compilations/sec
    0,006/0,6 = 0.01
    Показывает, что в 1% случаев выполняется повторная компиляция ранее скомпилированных запросов. Рекомендуемое значение SQL Recompilations/sec должно составлять менее 10% от значения SQL Compilations/sec. Показатель в пределах нормы.
  • Соотношение между Workfiles Created/sec и Batch Requests/sec
    1/19 = 0.05
    Показатель в пределах нормы.

Мониторинг использования памяти

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

По умолчанию, SQL Server изменяет свои требования к памяти динамически, исходя из доступных ресурсов системы.

Если SQL Server нужно больше памяти, он производит запрос к операционной системе, чтобы определить, доступна ли свободная физическая память, и использует ее. Если же SQL Server не нуждается в памяти, выделенной для него, он освобождает ее для операционной системы. Нужно отказаться от динамического использования памяти, так как при достижении порога Memory: Available Bytes в 100. 50 MB Windows включит агрессивный сброс (trimming) рабочих наборов процессов, включая системные драйверы, что приведет к резкому снижению производительности всех компонентов ОС. Чтобы избежать данной проблемы на сервере СУБД нужно задать значения параметрам конфигурации сервера Min Server Memory и Max Server Memory.

Далее в описании приводятся расчеты на одном из реальных примеров SQL Server, совмещающего два экземпляра SQL, один из которых выделен под базы данных SharePoint.

Существующему экземпляру b6s SQL выделено 2147483647 Mb, то есть SQL Server доступна вся память сервера – 96 GB.

Для расчета Max Server Memory применяется следующая (для не кластерного SQL Server) формула:

SQL максимальный размер ОЗУ = TotalPhyMem — (NumOfSQLThreads * ThreadStackSize) — (1GB * ОКРУГЛВНИЗ(NumOfCores/4)) — RAMOSReserved — RAMForOtherApps, где:

  • TotalPhyMem – общий физический размер ОЗУ на сервере.
  • NumOfCores – кол-во ядер процессоров.
  • NumOfSQLThreads – кол-во потоков, использующихся на сервере для обработки запросов к базам данных. При кол-ве ядер до 4 значение NumOfSQLThreads всегда постоянно и равно 256. При кол-ве ядер свыше 4 расчет выполняется по формуле: NumOfSQLThreads = 256 + (NumOfCores- 4) * 8.
  • ThreadStackSize = 2Мб для серверов x64. Для серверов IA64 ThreadStackSize=4Мб.
  • RAMOSReserved – ОЗУ для операционной системы. 20% для серверов с TotalPhyMem не более 15 Гб и 12,5% для большего объема.
  • RAMForOtherApps – ОЗУ для других экземпляров SQL-сервера и приложений.

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

Для b6s расчеты будут следующими:

  • TotalPhyMem = 98276 Мб.
  • NumOfCores = 32.
  • NumOfSQLThreads = 256 + (32- 4) * 8 = 480.
  • ThreadStackSize = 2 Мб.
  • RAMOSReserved = 12,5% * 98276 Мб = 11793 Мб.
  • RAMForOtherApps – Заказчик должен самостоятельно определить это значение. В текущих расчетах предполагаем значение в 8 000 Мб на второй экземпляр SQL.

Таким образом, размер буферного пула (при соответствующем значении «Max Server Memory») может вырасти до 69331 MB, тем самым, не влияя на работу операционной системы.

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

<Экземпляр SQL Server>Memory Node\Target Server Memory

Данные счетчика предоставляют информацию об идеальном объеме памяти, необходимом серверу.

<Экземпляр SQL Server> Memory Node \Total Server Memory

Данные счетчика предоставляют информацию об объеме памяти, выделенной серверу диспетчером памяти. Если Total Server Memory меньше Target Server Memory является признаком нехватки памяти.

<Экземпляр SQL Server>Buffer Manager\Buffer cache hit ratio

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

<Экземпляр SQL Server>Buffer Manager\Page Life Expectancy

Указывает среднее время жизни страниц в буферном пуле. Пороговое значение — не менее 300 секунд.

<Экземпляр SQL Server>Memory Manager\Memory Grants Pending

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

Пример показаний счетчиков мониторинга использования памяти
Target Server Memory (КiВ) Total Server Memory (КiВ) Buffer cache hit ratio Page Life Expectancy Lazy Writes
/sec
Memory Grants Pending
5312958 3683571 99,92% 9 905 712 10,739 0,018

Значения, находятся в приделах нормы, но следует отметить тот факт, что Total Server Memory меньше Target Server Memory. Обычно это признак нехватки памяти, но в данном случае ситуация выглядит иначе, так как SQL Server запрашивает память по мере необходимости. Если требования к памяти незначительны, то Total Server Memory останется намного ниже, чем Target Server Memory. Требования к памяти SQL Server для MS SharePoint Foundation 2013 – 8-16 GB для использования в производственной среде в ферме с одним сервером (подробнее здесь). Таким образом, на текущий момент увеличение памяти на сервере СУБД не требуется.

Если вы добрались до конца текста, значит, вы действительно глубоко копаете в теме администрирования SharePoint Server. Вероятно, у вас могут быть вопросы, которые остались за рамками этого текста. Не стесняйтесь задавать их в комментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *