Длина очереди диска в мониторе ресурсов

Использование Монитора ресурсов: дисковая подсистема

Для удобства рассмотрения мы будем использовать скриншот Монитора ресурсов (рис. A), запущенного на производственном сервере под управлением Windows Server 2008 R2. На этом сервере установлен Exchange Server 2010 со всеми ролями, поэтому он нуждается в большой дисковой подсистеме с приемлемой производительностью. (Примечание: как и все другие наши серверы, этот работает в виртуальной машине на базе VMware vSphere 4.1.)

Использование Монитора ресурсов: дисковая подсистема
Рисунок A. Монитор ресурсов в Windows Server 2008 R2 (нажмите на изображении для увеличения).

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

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

Процессы с дисковой активностью

В разделе «Процессы с дисковой активностью» (Processes With Disk Activity) перечислены все запущенные процессы, использующие ресурсы хранения. В списке показано имя исполняемого файла и ряд связанных с ним статистических показателей.

• «Образ» (Image) – имя исполняемого файла. Это имя процесса, активно использующего диск.
• «ИД процесса» (PID) – идентификатор процесса. Может пригодиться для управления процессами с использованием других утилит или для поиска процессов в Диспетчере задач (Task Manager).
• «Чтение (байт/с)» (Read (B/sec)) – среднее количество прочитанных процессом байтов в секунду за последнюю минуту.
• «Запись (байт/с)» (Write (B/sec)) – среднее количество записанных процессом байтов в секунду за последнюю минуту.
• «Всего (байт/с)» (Total (B/sec)) – среднее количество использованных байтов в секунду за последнюю минуту.

Информация, которая приводится в этом разделе, не особенно актуальна для диагностики – она лишь позволяет выяснить, какие процессы потребляют больше всего ресурсов диска. На рис. A, например, можно заметить, что больше всего операций чтения с диска выполняет процесс с именем «DPMRA.exe».

Работа диска

В разделе «Работа диска» (Disk Activity) собраны более полезные для диагностики сведения. Самый ценный показатель – пожалуй, время ответа, поскольку его можно оценить, даже не зная исходной конфигурации дисковой подсистемы.

Справа от названия раздела расположены два небольших индикатора. Зеленый показывает текущий дисковый ввод/вывод (Disk I/O), то есть, количество передаваемых в данный момент данных), а синий – максимум активного времени дисковой подсистемы (Highest Active Time).

• «Файл» (File) – имя файла, используемого процессом. Здесь указывается полный путь к файлу, чтобы его легче было найти.
• «Приоритет ввода/вывода» (I/O Priority) – приоритет операций ввода/вывода.
• «Время ответа (мс)» (Response Time (ms)) – время отклика диска в миллисекундах. Как правило, чем ниже этот показатель, тем лучше. В целом, время ответа менее 10 мс свидетельствует о хорошей производительности. Не страшно, если этот показатель время от времени превышает отметку в 10 мс, но если системе постоянно приходится дожидаться ответа дисковой подсистемы более 20 мс, это может свидетельствовать о наличии проблем, а конечные пользователи в таком случае заметят ощутимое снижение быстродействия. Если время ответа достигает 50 мс и выше, значит, проблема действительно серьезная. На рис. A, как видите, время ответа составляет 5-6 мс, так что дисковая подсистема функционирует исправно, если судить по этому показателю.

Запоминающие устройства

В разделе «Запоминающие устройства» (Storage) содержатся следующие сведения:

• «Логический диск» (Logical Disk) – буква диска.
• «Физический диск» (Physical disk) – выбранный для мониторинга физический диск.
• «Активное время (%)» (Active Time (%)) – сколько времени диск проводит, активно обслуживая запросы, в противовес времени простоя. Если активность диска постоянно очень высока (скажем, более 80%), это может указывать на наличие потенциальных проблем, связанных с ресурсами хранения. Если пользователи жалуются на низкое быстродействие, а активное время постоянно составляет 100%, возможно, необходимо увеличить объем дисковой подсистемы или установить более производительные накопители.
• «Свободно (МБ)» (Available Space (MB)) – количество свободного пространства в текущем томе диска.
• «Всего (МБ)» (Total Space (MB)) – общий объем тома.
• «Длина очереди диска» (Disk Queue Length) – средняя длина очереди диска. Длина очереди показывает количество ожидающих выполнения запросов (на чтение и запись) в любой момент времени. Если этот показатель довольно высок, это может свидетельствовать о том, что скорость вращения диска недостаточна для удовлетворения запросов приложений или что дисковая подсистема имеет слишком низкую производительность и не справляется с запросами. Однако чтобы оценить, насколько высок показатель, необходимо хорошо понимать, как создается базовый том в SAN. Каждый диск, из которых складывается базовый том, предоставляет дополнительные ресурсы, которые учитываются при расчете длины очереди (проще говоря, чем больше дисков, тем выше будет длина очереди).

Уровень RAID и размер страйпа тоже влияют на длину очереди, что дополнительно усложняет задачу. Однако если компьютер оснащен всего одним диском, а длина очереди постоянно превышает 2, система нуждается в дополнительных ресурсах хранения. Длина очереди более 5 свидетельствует о наличии серьезных проблем. Если вам известно, из скольких дисков состоит базовый том, умножьте количество дисков на 2, чтобы очень грубо, приблизительно, прикинуть максимально допустимую длину очереди. К примеру, если в системе десять дисков, а длина очереди равна 18, значит, все в порядке.

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

На сервере Exchange, который показан в моем примере, используется четыре диска (тома SAN). С учетом структуры базовых томов SAN в этом массиве, никаких проблем, связанных с длиной очереди, не возникает.

До встречи во второй части

Автор: Scott Lowe
Перевод SVET

Оцените статью: Голосов

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

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

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

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

Прежде чем говорить о производительности вспомним как устроен жесткий диск, так как многие особенности и ограничения 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 нужно в зависимости от характера нагрузки и как правильно спроектировать дисковую подсистему, чтобы она удовлетворяла предъявляемым требованиям.

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

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

Для наблюдения за дисками можно выбрать два типа объектов:

• Physical Disk — в качестве объекта мониторинга выступает то, что система определяет как физическое устройство. Это может быть как отдельный жесткий диск, так и несколько дисков, объединенных в RAID-массив. Если физический диск разбит на логические разделы (тома), то счетчики выдают суммарное значение для всех томов, находящихся на диске.
• Logical Disk — здесь в качестве объекта мониторинга выступает логический раздел. Perfmon идентифицирует тома по букве диска или точке монтирования (если том примонтирован как папка). Если физический диск разбит на несколько томов, то счетчики будут выдавать значения для каждого выбранного тома отдельно. Возможна и обратная ситуация, когда при использовании динамических дисков том может быть растянут на несколько физических устройств, тогда счетчики покажут значения сразу для всех физических дисков, входящих в состав логического.

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

Приступим к описанию счетчиков.

%Disk Time

Показывает процент общей загруженности диска. Представляет из себя сумму значений счетчиков %Disk Read Time (процент загруженности диска операциями чтения) и %Disk Write Time (процент загруженности диска операциями записи). Теоретически его значения должны быть в диапазоне от 0 до 100%, однако это верно только для одиночного диска. При использовании RAID-массивов часто можно увидеть значения этого счетчика больше 100%.

%Idle Time

Показывает время простоя диска, т.е. время, в течении которого диск оставался в состоянии покоя, не обрабатывая запросы чтениязаписи. В отличии от %Disk Time лежит строго в диапазоне от 100% (полный покой) до 0 (полная загрузка).

Disk Transfers/sec

Основной показатель интенсивности запросов к диску. Показывает общее количество операций вводавывода, обработанных (завершенных) диском в течении 1 секунды (Input/Output Operations Per Second, IOPS). Этот счетчик позволяет примерно оценить, насколько нагрузка на диски близка к предельной. Для дисков, работающих в нормальном режиме, можно ориентироваться на следующие значения: 80-160 IOPS для одиночного жесткого диска SATA или SAS, 1800-5000 IOPS для одиночного SSD диска. Для уточнения можно воспользоваться счетчиками Disk Reads/sec (количество обработанных за секунду запросов на чтение) и Disk Writes/sec (количество обработанных за секунду запросов на запись).

Avg. Disk sec/Transfer

Среднее время в секундах, требуемое для выполнения диском одной операции чтения или записи. Складывается из значений Avg. Disk sec/Read (время на выполнение операции чтения) и Avg. Disk sec/Write (время на выполнение операции записи). Для высоконагруженых систем, таких как сервера БД, значение Avg. Disk sec/Transfer не должно превышать 0,1, для рядовых серверов допустимо значение 0,25.

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

Avg. Disk Queue Length

Cредняя длина очереди запросов к диску. Отображает количество запросов к диску, ожидающих обработки в течении определенного интервала времени. Нормальным считается очередь не больше 2 для одиночного диска. Если в очереди больше двух запросов, то возможно диск перегружен и не успевает обрабатывать поступающие запросы. Уточнить, с какими именно операциями не справляется диск, можно с помощью счетчиков Avg. Disk Read Queue Length (очередь запросов на чтение) и Avg. Disk Wright Queue Length (очередь запросов на запись).

Значение Avg. Disk Queue Length не измеряется, а рассчитывается по закону Литтла из математической теории очередей. Согласно этому закону, количество запросов, ожидающих обработки, в среднем равняется частоте поступления запросов, умноженной на время обработки запроса. Т.е. в нашем случае Avg. Disk Queue Length = (Disk Transfers/sec) * (Avg. Disk sec/Transfer).

Avg. Disk Queue Length приводится как один из основных счетчиков для определения загруженности дисковой подсистемы, однако для его адекватной оценки необходимо точно представлять физическую структуру системы хранения. К примеру, для одиночного жесткого диска критическим считается значение больше 2, а если диск располагается на RAID-массиве из 4-х дисков, то волноваться стоит при значении больше 4*2=8.

Current Disk Queue Length

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

Disk Bytes/sec

Средняя скорость обмена данными с диском, или скорость чтениязаписи. Показывает общее количество байт, отправленных на диск (запись) и с диска (чтение) в течении одной секунды, тем самым позволяя оценить пропускную способность дисковой системы. Складывается из значений Disk Read Bytes/sec (скорость чтения) и Disk Write Bytes/sec (скорость записи). Предельные значения сильно зависят от типа диска: к примеру для одиночного жесткого диска максимальная скорость чтениязаписи лежит в пределах 160-250Mb/s, для одиночного SSD — около 550-600Mb/s.

Читайте также  Технология изготовления экрана какая самая лучшая

Avg. Disk Bytes/Transfer

Среднее количество байт, передаваемое при выполнении одной операции чтениязаписи. Чем больше размер передаваемых блоков, тем меньше нагрузка на диск. При нормальной работе этот параметр должен быть больше 20Kb, значения меньше говорят о большом количестве мелких запросов, т.е. о неэффективном использовании дисковой системы. Более точную информацию можно получить из значений счетчиков Avg. Disk Bytes/Read (количество байт, передаваемое при выполнении одной операции чтения) и Avg. Disk Bytes/Write (количество байт, передаваемое при выполнении одной операции записи).

Split IO/Sec

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

И только для объектов Logical Disk есть еще два счетчика, позволяющие определить наличие свободного места на диске.

%Free Space

Объем свободного дискового пространства на выбранном логическом диске, в процентах.

Free Megabytes

Объем свободного пространства на логическом диске, в мегабайтах.

Заключение

Для того, чтобы адекватно оценить полученные данные, необходимо точно представлять физическую структуру системы хранения. В первую очередь важен тип используемых дисков (HDD, SSD), интерфейс (SATA, SAS, FC, PCIe), скорость вращения HDD (7200, 10k, 15k). При использовании RAID-массивов нужно знать тип массива (0, 1, 5, 10 и т.д.) и количество дисков в массиве.

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

1. Большое количество случайных операций чтениязаписи, данные обрабатываются небольшими блоками. Этот тип нагрузки характерен для серверов баз данных. При таком типе нагрузки наиболее важным параметром является количество IOPS-ов. Основные счетчики — Disk Transfers/sec, Avg. Disk sec/Transfer и конечно Avg. Disk Queue Length.

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

Обсуждение завершено Выявление процессов, поглощающих ресурсы жесткого диска

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

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

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

Оценка производительности жесткого диска

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

Для начала стоит осуществить дефрагментацию всех разделов диска, чтобы обеспечить непрерывность файлов и ускорить процессы чтения и записи. Утилиту «Дефрагментация диска» (Disk Defragmenter) можно запустить из меню «Пуск | Все программы | Стандартные | Служебные» (Start | All Programs | Accessories | System Tools).

После дефрагментации запустите Монитор производительности (Performance Monitor) из раздела «Администрирование» в Панели управления (Control Panel | Administrative Tools).

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

В окне Монитора производительности проделайте следующие действия:

1. Нажмите значок «Плюс». Откроется диалоговое окно «Создание счетчика» (Add Counters).
2. Выберите опцию «PhysicalDisk» из выпадающего списка «Объект быстродействия» (Performance Object). Откроется список счетчиков производительности физического диска.
3. Выберите счетчик «%Disk Time» и нажмите кнопку «Все экземпляры» (All Instances), чтобы измерить производительность всех жестких дисков.
4. Нажмите кнопку «Создать» (Add), чтобы добавить счетчик в Монитор производительности.
5. Выберите счетчик «Avg. Disk Queue Length», нажмите кнопку «Все экземпляры», кнопку «Создать», а затем закройте окно.

После этого Монитор производительности начнет анализ использования диска (рис. A).

Рисунок A. Цифры под графиком указывают на время использования Диска 0 в процентах.

Линии графика соответствуют выбранным счетчикам. К примеру, на рис. A преобладает розовая линия, соответствующая средней длине очереди для разделов «C:» и «D:» Диска 0. Чтобы получить конкретные показатели, нужно просто выделить соответствующий счетчик. Всегда лучше ориентироваться на цифры, а не на график — он может оказаться обманчивым, особенно если шкала выбрана неправильно.

Сужаем круг поиска

Теперь давайте попытаемся выяснить, какой процесс поглощает ресурсы жесткого диска. Одновременно нажмите [Ctrl]+[Alt]+[Delete], чтобы вызвать диалоговое окно «Безопасность Windows» (Windows Security), и выберите опцию «Диспетчер задач» (Task Manager). Диспетчер задач показывает, сколько ресурсов оттягивает на себя каждый запущенный процесс.

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

Я бы посоветовал снять флажки со всех полей, кроме «Ввод/Вывод — Чтение (байт)» (I/O Read Bytes) и «Ввод/Вывод — Запись (байт)» (I/O Write Bytes). Нажмите «OK». Теперь Диспетчер задач будет показывать, какой объем данных в байтах прочитывает и записывает каждый процесс (рис. B).

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

Рисунок B. Чтобы «убить» процесс, поглощающий системные ресурсы, выделите его и нажмите кнопку «Завершить процесс» (End Process).

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

Подкачка и пробуксовка

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

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

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

Обычный круг подозреваемых

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

Длина очереди диска в мониторе ресурсов

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

  • September 2021
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30

Время использования жесткого диска и очередь процессов

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

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

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

Оценка производительности жесткого диска

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

Для начала стоит осуществить дефрагментацию всех разделов диска, чтобы обеспечить непрерывность файлов и ускорить процессы чтения и записи. Утилиту «Дефрагментация диска» (Disk Defragmenter) можно запустить из меню «Пуск | Все программы | Стандартные | Служебные» (Start | All Programs | Accessories | System Tools).

После дефрагментации запустите Монитор производительности (Performance Monitor) из раздела «Администрирование» в Панели управления (Control Panel | Administrative Tools).

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

В окне Монитора производительности проделайте следующие действия:

1. Нажмите значок «Плюс». Откроется диалоговое окно «Создание счетчика» (Add Counters).
2. Выберите опцию «PhysicalDisk» из выпадающего списка «Объект быстродействия» (Performance Object). Откроется список счетчиков производительности физического диска.
3. Выберите счетчик «%Disk Time» и нажмите кнопку «Все экземпляры» (All Instances), чтобы измерить производительность всех жестких дисков.
4. Нажмите кнопку «Создать» (Add), чтобы добавить счетчик в Монитор производительности.
5. Выберите счетчик «Avg. Disk Queue Length», нажмите кнопку «Все экземпляры», кнопку «Создать», а затем закройте окно.

Читайте также  Как называется монитор со встроенным системным блоком

После этого Монитор производительности начнет анализ использования диска (рис. A).

Рисунок A. Цифры под графиком указывают на время использования Диска 0 в процентах.

Линии графика соответствуют выбранным счетчикам. К примеру, на рис. A преобладает розовая линия, соответствующая средней длине очереди для разделов «C:» и «D:» Диска 0. Чтобы получить конкретные показатели, нужно просто выделить соответствующий счетчик. Всегда лучше ориентироваться на цифры, а не на график — он может оказаться обманчивым, особенно если шкала выбрана неправильно.

Сужаем круг поиска

Теперь давайте попытаемся выяснить, какой процесс поглощает ресурсы жесткого диска. Одновременно нажмите [Ctrl]+[Alt]+[Delete], чтобы вызвать диалоговое окно «Безопасность Windows» (Windows Security), и выберите опцию «Диспетчер задач» (Task Manager). Диспетчер задач показывает, сколько ресурсов оттягивает на себя каждый запущенный процесс.

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

Я бы посоветовал снять флажки со всех полей, кроме «Ввод/Вывод — Чтение (байт)» (I/O Read Bytes) и «Ввод/Вывод — Запись (байт)» (I/O Write Bytes). Нажмите «OK». Теперь Диспетчер задач будет показывать, какой объем данных в байтах прочитывает и записывает каждый процесс (рис. B).

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

Рисунок B. Чтобы «убить» процесс, поглощающий системные ресурсы, выделите его и нажмите кнопку «Завершить процесс» (End Process).

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

Подкачка и пробуксовка

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

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

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

Обычный круг подозреваемых

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

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

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

Как правило, повышенную нагрузку на диски можно определить различными способами. Основной из них – это получение счетчика «Средней длины очереди к диску»:

Рис.1. Средняя длина очереди к диску для чтения и записи

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

Рассмотрим несколько основных причин повышенной нагрузки на диски для систем на базе MS SQL Server.

  1. Нагрузка на диски обусловлена быстрым вытеснением данных из кеша SQL Server.

Рисунок 2

Рис.2. Демонстрация вытеснения данных из кеша SQL Server

На рисунке 2 показаны 3 условных этапа различной нагрузки на диск. На этапе 1 и этапе 3 – очереди к диску были минимальны. Почему же на этапе 2 очередь резко возросла и это привело к появлению проблем производительности у пользователей? Ответ на этот вопрос легко найти на втором графике рисунка 2: «Ожидаемый срок жизни страницы памяти», который показывает предполагаемое время нахождения страницы данных в кеше SQL Server. Между двумя этапами видим резкое понижение этого графика со значения 3000 до 200. С точки зрения логики работы SQL Server это означает, что данные будут находится к кеше не 3000 секунд как раньше, а 200 секунд, следовательно, если пользователь запросит данные через 300 секунд, то SQL Server с почти 100% вероятностью не найдет их в оперативной памяти (кеше) и придется выполнять операцию чтения с диска. Этими операциями обеспечивается рост очереди к диску. В течение всего этапа 2 кеш «прогревался» (заполнялся данными) и на этапе 3 нагрузка на диск упала.

Мы определили вид проблемы, теперь рассмотрим варианты решения.

Что надо сделать:

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

— Возможно проблема в качестве обслуживания статистик и индексов MS SQL Server.

Что не надо делать:

— Не надо покупать новые диски (дисковые массивы), это не решает проблему, а скорее ее усугубляет.

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

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

2. Нагрузка на диски, обусловленная свопированием памяти на диски вследствие нехватки свободной памяти.

Рисунок 1

Рис.1. Практический пример повышенной нагрузки на диск

На рисунке 1 показана практическая ситуация на сервере БД SQL Server у клиента в течение 1,5 часов. Как видно по счетчику «Средней длины очереди к диску» диск нагружен и не справляется с количеством обращений к нему.

На рисунке также показаны два других показателя: «Нагрузка CPU», «Свободная оперативная память» для поиска причин торможения диска. Условно делим ситуацию на два этапа: первый этап – очередь к диску практически равна 0 и пользователи работают в обычном режиме, и второй этап – в течение которого очередь к диску поднимается до максимальных значений (342) и пользователи не могут качественно работать. Чем же обусловлена такая нагрузка на диск?

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

Показатель «Свободная оперативная память» как раз показывает доступность реальной оперативной памяти для других процессов, а, следовательно, чем его значение больше, тем меньше вероятность свопирования. На рисунке 1 значение свободной оперативной памяти на сервере баз данных постоянно уменьшается до 500 Мб, далее до 200 Мб, это в свою очередь и привело к нагрузке на диск (на этапе 2).

Встает вопрос – а зачем на рисунке 1 мы показали счетчик «Нагрузка CPU»? Все просто, на этапе 1 средняя загрузка CPU была около 50%, на этапе 2 – 40%, при этом в системе работало аналогичное количество пользователей. Такое уменьшение значения говорит о том, что процессор недозагружен и узкое место в производительности сместилось в сторону диска (он не справляется).

Для исправления этой ситуации достаточно правильно распределить потребление оперативной памяти и не допустить уменьшение ее объема до 500Мб (как рекомендация). Неправильным вариантом решения была бы покупка более производительного физического диска или хранилища.

3. Нагрузка на диски, обусловленная внутренними механизмами работы SQL Server.

Рисунок 2

Рис. 2. Периодическая нагрузка на диск

Как видно из рисунка 2, периодически очередь к диску увеличивается, причем эти «скачки» происходят через одинаковые временные интервалы. Это может говорить о том, что есть периодически повторяемые регламентные операции.

Из нашего опыта это могут быть следующие операции:

— Увеличение размера файлов данных и лога транзакций (особенно если указан фиксированный размер прироста).

— Резервная копия файла данных или журнала транзакций.

Сбор и анализ данных осуществлялся с использованием мониторинга производительности PerfExpert.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: