Общие сведения о характеристиках производительности дисков
Производительность приложения часто зависит от того, насколько быстро приложение может считывать и записывать данные. Чтобы повысить производительность приложения, необходимо сначала понять, как измеряется производительность. Затем изучите параметры и варианты, влияющие на него.
Характеристики производительности дисков
Чтобы выбрать правильный тип диска, важно понимать показатели производительности. Ниже перечислены показатели производительности.
- Операции ввода-вывода (операции ввода-вывода в секунду): количество запросов, которые приложение отправляет на диски в одну секунду, напрямую влияет на производительность приложения. Некоторые приложения, например интернет-магазины, требуют большого количества операций ввода-вывода в секунду для обработки всех небольших и случайных запросов ввода-вывода, которые должны быстро обрабатываться для эффективной работы сайта. Чем больше это значение, тем выше производительность диска.
- Пропускная способность. Пропускная способность — это объем данных, которые приложение отправляет на диски в указанный интервал. Пропускная способность также называется скоростью передачи данных и измеряется в МБ/с. Если приложение выполняет ввод-вывод крупных блоков данных, для него требуется высокая пропускная способность. Чем больше это значение, тем выше производительность диска.
- Задержка. Задержка выражает время, которое требуется приложению для отправки запроса на диск и получения ответа. Задержка накладывает ограничения на количество эффективных операций ввода-вывода в секунду. Например, если диск может обрабатывать 5000 операций ввода-вывода в секунду, но каждая операция занимает 10 мс для обработки, ваше приложение ограничивается 100 операций в секунду из-за времени обработки. Задержка значительно улучшается при включении кэширования узла ReadOnly.
Отличие IOPS и пропускной способности
Пропускная способность и число операций ввода-вывода в секунду прямо пропорциональны. Изменение одного значения напрямую влияет на другое. Чтобы рассчитать теоретическое ограничение пропускной способности, можно использовать следующую формулу: число операций ввода-вывода в секунду × размер ввода-вывода = пропускная способность. При проектировании приложения важно учитывать оба эти значения.
Для дисков ценовой категории "Ультра" и управляемых дисков SSD уровня "Премиум" версии 2 оно работает немного иначе, так как можно независимо настраивать размер диска, операции ввода-вывода в секунду и пропускную способность. Корректировки операций ввода-вывода в секунду или пропускной способности для дисков Ценовой категории "Премиум" и управляемых дисков SSD уровня "Премиум" версии 2 можно выполнять во время выполнения, не отключая диск от виртуальной машины.
Операции ввода-вывода в секунду у дисков категории "Ультра"
Диски категории "Ультра" поддерживают максимум 300 операций ввода-вывода в секунду/ГиБ, но не более 160 000 на диск. Для достижения диском целевого показателя количества операций убедитесь, что выбранное для диска значение не превышает ограничения виртуальной машины.
Текущее максимальное ограничение операций ввода-вывода в секунду для одной виртуальной машины в общедоступных размерах составляет 160 000. В качестве общих дисков для поддержки нескольких виртуальных машин можно использовать диски Ultra с большим числом операций ввода-вывода в секунду.
Минимальное гарантированное количество операций ввода-вывода в секунду на диск — 1 операция/ГиБ. При этом общее базовое минимальное значение — 100 операций ввода-вывода в секунду. Например, если вы подготовили диск категории "Ультра" размером 4 ГиБ, то минимальное количество операций ввода-вывода для этого диска составит 100, а не четыре.
Пропускная способность дисков ценовой категории "Ультра"
Ограничение пропускной способности одного диска ультра — 256 КиБ/с для каждого подготовленного ввода-вывода в секунду до 4000 МБ/с на диск (где МБ/с = 10^6 Байт в секунду). Минимальная гарантированная пропускная способность на диск составляет 4KiB/с для каждого подготовленного ввода-вывода в секунду с общим базовым показателем не менее 1 МБ/с.
Операции ввода-вывода в секунду SSD (цен. категория "Премиум") версии 2
Все диски SSD (цен. категория "Премиум") версии 2 имеют базовый показатель операций ввода-вывода в секунду 3000, который предоставляется бесплатно. После 6 ГиБ максимальное количество операций ввода-вывода в секунду, которое может иметь диск, увеличивается со скоростью 500 на ГиБ, до 80 000 операций ввода-вывода в секунду. Таким образом, диск 8-ГиБ может иметь до 4000 операций ввода-вывода в секунду, а 10 ГиБ может иметь до 5000 операций ввода-вывода в секунду. Чтобы установить 80 000 операций ввода-вывода в секунду на диске, этот диск должен иметь емкость не менее 160 ГиБ. Увеличение числа операций ввода-вывода в секунду за пределами 3000 увеличивает цену диска.
Пропускная способность SSD (цен. категория "Премиум") версии 2
Все диски SSD уровня "Премиум" версии 2 имеют базовую пропускную способность 125 МБ/с, которая бесплатна. После 6 ГиБ максимальная пропускная способность, которую можно установить, увеличивается на 0,25 МБ/с на каждый набор операций ввода-вывода в секунду. Если для диска доступно 3000 операций ввода-вывода в секунду, максимальная пропускная способность, которую он может установить, составляет 750 МБ/с. Чтобы увеличить пропускную способность этого диска выше 750 МБ/с, необходимо увеличить количество его операций ввода-вывода в секунду. Например, если вы увеличили число операций ввода-вывода в секунду до 4000, то максимальная пропускная способность, которую можно установить, составит 1000. 1200 МБ/с — это максимальная пропускная способность, поддерживаемая для дисков с 5000 операций ввода-вывода в секунду или более. Увеличение пропускной способности за пределами 125 МБ/с увеличивает цену диска.
Ограничения операций ввода-вывода на виртуальной машине
Теперь, когда вы узнали, какие диски доступны в Azure, необходимо сопоставить виртуальные машины с правильным типом диска. Виртуальные машины имеют собственные ограничения на операции ввода-вывода в секунду в хранилище, что может повлиять на общую производительность в сочетании с числом операций ввода-вывода в секунду диска.
Если вы неправильно выбрали размер виртуальной машины для производительности хранилища, которая требуется приложению, то сама виртуальная машина становится узким местом.
Например, предположим, что приложение выполняет запрос, который требует 15 000 операций ввода-вывода в секунду. Вы подготовили Standard_D8s_v3 виртуальную машину с одним диском ОС P30 и двумя дисками данных SSD класса Premium с номером SKU P40. Каждый диск данных может обрабатывать 7500 операций ввода-вывода в секунду и в конечном итоге может соответствовать требованию приложений. Однако сама виртуальная машина имеет максимальный предел в 12 800 операций ввода-вывода в секунду, что является фактическим числом операций ввода-вывода в секунду, которое получает приложение. Этот пример показан на следующей схеме.
Сценарий, показанный в предыдущем примере, известен как ограничения на операции ввода-вывода виртуальной машины. В этом сценарии приложение запрашивает объем пропускной способности и операций ввода-вывода в секунду, которым может управлять диск, но виртуальная машина не может соответствовать этим требованиям.
Вы можете диагностировать проблемы с производительностью, вызванные ограничениями ввода-вывода виртуальной машины, используя следующие метрики.
- Процент использования кэшированных операций ввода-вывода в секунду виртуальной машины
- Процент использования кэшированной пропускной способности виртуальной машины
- Процент использования некэшированных операций ввода-вывода в секунду виртуальной машины
- Процент использования некэшированной пропускной способности виртуальной машины
Ограничения операций ввода-вывода диска
Иногда возникают ситуации, в которых решение хранилища не соответствует требованиям приложения. Однако узкие места могут быть связаны с выбором неподходящего уровня производительности для дисков.
Рассмотрим тот же пример, в котором приложению требуется 15 000 операций ввода-вывода в секунду на виртуальной машине, и выберите следующую настройку:
- Виртуальная машина категории "Стандартный" D16s_v4 с 25 600 операций ввода-вывода в секунду
- Диск ОС P20 с 2300 операций ввода-вывода в секунду
- Два диска данных P30, по 5000 операций ввода-вывода в секунду каждый
В этом сценарии спрос приложения делится на три разных запроса:
- 2300 операций ввода-вывода в секунду для диска ОС
- По 5000 операций ввода-вывода в секунду для дисков данных
Общая сумма операций ввода-вывода в секунду, возвращаемая виртуальной машиной в приложение, составляет 12300 в виде суммы операций ввода-вывода в секунду, предоставляемых ос и дисками данных.
Этот сценарий называется ограничением ввода-вывода диска, когда сам диск не соответствует требованиям приложения.
Для диагностики ограничения дискового ввода-вывода используйте следующие метрики.
- Процент использования операций ввода-вывода в секунду для диска данных
- Процент использования пропускной способности диска данных
- Процент использования операций ввода-вывода в секунду для диска ОС
- Процент использования пропускной способности диска ОС
Кэширование диска
Кэш — это специализированный компонент, который сохраняет данные (чаще всего в оперативной памяти), чтобы приложение могло быстрее получать к ним доступ. Данные в кэше часто являются данными, считываемыми ранее или данными, которые привели к предыдущему вычислению. Из кэша приложение извлекает данные быстрее, чем с диска. Кэширование дисков недоступно на дисках категории "Ультра" и SSD уровня "Премиум" версии 2.
Кэширование использует специализированные и иногда дорогостоящие временные хранилища с более высокой производительностью чтения и записи, чем у постоянных хранилищ. Так как хранилище кэша часто ограничено, может потребоваться решить, какие операции с данными больше всего выигрывают от кэширования. Но даже если кэш свободно доступен, как, например, на платформе Azure, важно хорошо понимать структуру нагрузки для каждого диска, чтобы правильно выбрать для него тип кэширования.
Кэширование операций чтения позволяет ускорить получение данных. Приложение считывает данные не из постоянного хранилища, а из более быстрого кэша.
Важно отметить, что кэширование чтения помогает при наличии некоторой прогнозируемости в очереди, которую вы читаете, например набор последовательных операций чтения. Для случайных операций ввода-вывода, в которых данные, к которым вы обращаетесь, разбросаны по хранилищу, кэширование имеет мало или нет преимуществ и может даже снизить производительность диска.
Кэширование операций записи позволяет ускорить запись данных в постоянное хранилище. При использовании кэша записи приложение может учитывать данные, которые следует сохранить.
В действительности при использовании кэширования записи данные помещается в кэш, ожидая записи на диск. Как вы уже наверняка догадались, такой механизм может стать точкой сбоя, например если система завершит работу до записи кэшированных данных. Некоторые системы, например SQL Server, самостоятельно выполняют запись кэшированных данных в постоянное дисковое хранилище.
Ограничения кэшированных и некэшированных данных виртуальных машин
Мы узнали, как кэширование может повысить производительность чтения или записи данных на диске, теперь рассмотрим, как кэширование влияет на производительность виртуальной машины.
Производительность виртуальной машины зависит от ограничений операций ввода-вывода в секунду и пропускной способности, которые накладываются на размер виртуальной машины. Все виртуальные машины категории "Премиум" имеют разные ограничения на операции ввода-вывода в секунду и пропускную способность в зависимости от использования кэширования. Вы можете повысить производительность виртуальной машины, чтобы удовлетворить более высокие требования к операциям ввода-вывода в секунду и пропускной способности, включив кэширование узла виртуальной машины.
В следующей таблице приведены примеры, иллюстрирующие разницу в производительности для пропускной способности кэшированного и некэшированного диска.
Название размера виртуальной машины | Максимальная пропускная способность кэшированного и временного хранилища: операций ввода-вывода в секунду/МБ/с (размер кэша в ГиБ) | Максимальная пропускная способность диска без кэширования в секунду/МБ/с |
---|---|---|
Standard_D2s_v3 | 4000/32 (50) | 3200/48 |
Standard_D4s_v3 | 8000/64 (100) | 6400/96 |
Standard_D8s_v3 | 16 000/128 (200) | 12 800/192 |
Standard_D64s_v3 | 128 000/1024 (1600) | 80 000/1200 |
Кэширование узла помогает избежать проблем с узкими местами, создаваемыми виртуальной машиной.
В предыдущем примере с ограничением ввода-вывода виртуальной машины приложение требовало 15 000 операций ввода/вывода в секунду. Оба диска данных могут справиться с этим требованием, но виртуальная машина Standard_D8s_v3 может предоставлять только 12 800 операций ввода-вывода в секунду в некэшированном состоянии.
Если вы настроите кэширование узлов на виртуальной машине Standard_D8s_v3, вы можете получить 16 000 кэшированных операций ввода-вывода в секунду, что больше, чем требования приложения.