Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows ✔️ Гибкие масштабируемые наборы ✔️ Унифицированные масштабируемые наборы
Эта статья призвана прояснить вопросы, касающиеся производительности дисков и принципов их работы при объединении виртуальных машин Azure и дисков Azure. Здесь также описывается, как диагностировать узкие места для дисковых операций ввода-вывода и вносить изменения для оптимизации производительности.
По какому принципу определяется производительность дисков?
На виртуальных машинах Azure ограничения производительности операций ввода-вывода в секунду и пропускной способности зависят от типа и размера виртуальной машины. К виртуальным машинам можно подключать диски с ОС и диски с данными. У дисков имеются собственные ограничения по операциям ввода-вывода и пропускной способности.
Disk allocation and performance
Существует три пути, которые пропускная способность и операции ввода-вывода в секунду (IOPS) могут выполняться на диски, подключенные к виртуальной машине в Azure. На следующей схеме показано выделение этих путей в режиме реального времени.
The following diagram depicts real-time allocation of bandwidth and I/O operations per second (IOPS) for disks, with three paths that I/O can take.
The first I/O path is the uncached managed disk path. Операции ввода-вывода используют этот путь, когда вы используете управляемый диск и устанавливаете кэширование хоста на none
. Операции ввода-вывода, использующие этот путь, выполняются на основе выделения ресурсов на уровне диска, а затем на уровне сети ВМ для операций ввода-вывода и пропускной способности.
Второй путь ввода/вывода — это путь кэшированного управляемого диска. Кэшированное управление вводом-выводом диска использует SSD, который находится близко к виртуальной машине. Этот SSD имеет свои собственные настроенные показатели IOPS и пропускной способности, которые отображаются в диаграмме как "планирование на уровне SSD".
Когда кешируемый управляемый диск инициирует чтение, запрос сначала проверяет, находятся ли данные на серверном SSD. Если данные отсутствуют, возникает ошибка в кэше. Операции ввода-вывода выполняются сначала на основе настройки на уровне SSD, затем на уровне диска, а после этого на уровне сети виртуальной машины, для обеспечения количества операций в секунду и пропускной способности.
Когда SSD сервера инициирует чтение кэшированных операций ввода-вывода, находящихся на SSD сервера, происходит кэш-хит. Затем ввод-вывод выполняется на основе настройки уровня SSD. Writes that a cached managed disk initiates always follow the path of a cached miss. Они проходят обеспечение на уровне SSD, уровне диска и сетевого уровня виртуальных машин.
Третий путь ведет к диску Local/Temp. Он доступен только на виртуальных машинах, поддерживающих локальные или временные диски. Операция ввода-вывода, использующая этот путь, выполняется на основе SSD-уровня распределения ресурсов для IOPS и пропускной способности.
На следующей схеме показан пример этих ограничений. Система предотвращает достижение виртуальной машиной Standard_D2s_v3 потенциала в 5000 IOPS на диске P30, независимо от того, используется ли кеширование, из-за ограничений на уровне SSD и сети.
Azure использует приоритетный сетевой канал для передачи данных диска. Трафик диска имеет приоритет над низкоприоритетным сетевым трафиком. Эта приоритизация помогает дискам поддерживать ожидаемую производительность при возникновении сетевого состязания.
Аналогично, Azure Storage обрабатывает конфликты ресурсов и другие проблемы в фоновом режиме с автоматическим распределением нагрузки. Azure Storage выделяет необходимые ресурсы при создании диска и применяет проактивное и реактивное балансирование ресурсов для управления уровнем трафика. Это поведение дополнительно гарантирует, что диски могут поддерживать ожидаемые показатели IOPS и цели по пропускной способности. Используйте метрики уровня виртуальной машины и уровня диска для отслеживания производительности и настройки оповещений по мере необходимости.
Ограничение дискового ввода-вывода
Если приложение запрашивает объем операций ввода-вывода или пропускной способности, превышающий выделенную для виртуальных машин или подключенных дисков величину, производительность этого приложения ограничивается. При таком ограничении приложение работает с неоптимальной производительностью. Это может привести к негативным последствиям, например к увеличению задержки. Давайте рассмотрим несколько примеров, чтобы прояснить этот принцип. Для простоты рассмотрим только IOPS (операции ввода-вывода в секунду). Но такая же логика применима и в отношении пропускной способности.
Настройка:
- Standard_D8s_v3
- Операции ввода-вывода в секунду без кэширования: 12 800
- Диск ОС E30
- IOPS (Операций ввода-вывода в секунду): 500
- Два диска данных E30 × 2
- IOPS (Операций ввода-вывода в секунду): 500
Приложение, работающее на виртуальной машине, делает запрос, который требует 10,000 IOPS. Все из этих операций разрешены виртуальной машиной, так как виртуальная машина Standard_D8s_v3 может выполнять до 12 800 операций ввода-вывода в секунду.
Запросы на 10 000 IOPS распределяются на три запроса к разным дискам.
- 1000 IOPS запрашивается у диска операционной системы.
- 4 500 операций ввода-вывода в секунду запрашиваются у каждого диска с данными.
Все подключенные диски являются дисками E30 и могут обрабатывать только 500 операций ввода-вывода в секунду. Итак, каждый из них отвечает со скоростью 500 IOPS. Производительность приложения ограничивается подключенными дисками, при этом обработаться может только 1500 операций ввода-вывода в секунду. Приложение может работать с пиковой производительностью 10 000 операций ввода-вывода в секунду при использовании более производительных дисков, например SSD дисков P30 категории "Премиум".
Ограничение операций ввода-вывода для виртуальной машины
Настройка:
- Standard_D8s_v3
- Операции ввода-вывода в секунду без кэширования: 12 800
- Диск ОС P30
- IOPS: 5000
- Два диска данных P30 × 2
- IOPS: 5000
Приложение, работающее на виртуальной машине, выполняет запрос, для которого необходимо 15 000 операций ввода-вывода в секунду. К сожалению, виртуальная машина Standard_D8s_v3 обеспечивает только 12 800 операций ввода-вывода в секунду. Производительность приложения блокируется ограничениями виртуальной машины и должна соответствовать выделенным 12 800 операциям ввода-вывода в секунду.
Запрошенные 12 800 операций ввода-вывода в секунду распределяются на три разных запроса к разным дискам:
- 4267 операций ввода-вывода в секунду запрашиваются у диска с операционной системой.
- 4,266 операций ввода-вывода в секунду запрашиваются у каждого диска с данными.
Все подключенные диски — это диски P30, которые могут обрабатывать 5000 операций ввода-вывода в секунду. Итак, они отвечают с запрошенными суммами.
Сравнение виртуальной машины без кеширования с машиной с ограничением кэширования
Для виртуальных машин, которые используются как для хранилища категории "Премиум", так и для кэширования в хранилище категории "Премиум", существует два разных ограничения пропускной способности хранилища. Возьмем для примера виртуальную машину Standard_D8s_v3. Ниже приведена документация для серии Dsv3 и Standard_D8s_v3.
Данные диска „без кэширования” в разделе Удаленного хранилища являются максимальными пределами хранилища по умолчанию, которые может обрабатывать виртуальная машина.
Данные диска "Кэшированные" на вкладке "Локальное хранилище" являются отдельными ограничениями при включении кэширования узла.
Кэширование узла переносит хранилище ближе к виртуальной машине для ускорения чтения и записи. Объем хранилища, который доступен виртуальной машине при кэшировании узла, приведен в документации. Например, вы можете увидеть, что для Standard_D8s_v3 размер хранилища кэша составляет 200 ГиБ.
Вы можете включить кэширование узла при создании виртуальной машины и подключении дисков. Вы также можете включить и отключить кэширование хоста на дисках существующей виртуальной машины. По умолчанию диски данных с поддержкой кэша не включают кэширование. Диски ОС с поддержкой кэша включают кэширование операций чтения и записи.
Кэширование узла можно настроить в соответствии с требованиями к рабочей нагрузке для каждого диска. Вы можете настроить кэширование узла следующим образом:
- Только для чтения: для рабочих нагрузок, выполняющих исключительно операции чтения.
- Чтение и запись: для рабочих нагрузок, которые в равной мере выполняют операции чтения и записи.
Если ваша рабочая нагрузка не соответствует ни одному из этих шаблонов, мы не рекомендуем использовать кэширование узла.
Давайте рассмотрим несколько примеров с различными параметрами кэширования узла, чтобы посмотреть, как они влияют на поток данных и производительность. В этом первом примере мы видим, что происходит с запросами ввода-вывода, когда параметр кэширования узла имеет значение "Только для чтения".
Настройка:
- Standard_D8s_v3
- Кэшированные IOPS: 16 000
- Операции ввода-вывода в секунду без кэширования: 12 800
- Диск данных P30
- IOPS: 5000
- Кэширование узла: Только чтение
Когда выполняется чтение и нужные данные доступны в кэше, кэш возвращает запрошенные данные. Нет необходимости считывать с диска. Эта операция чтения учитывается в пределах лимитов кэширования виртуальной машины.
Когда выполняется чтение и необходимые данные недоступны в кэше, запрос на чтение передается на диск. Затем диск предоставляет данные как кэшу, так и виртуальной машине. Эта операция чтения учитывается в рамках ограничений виртуальной машины для кэшированных операций и для операций без кэширования.
При выполнении записи запись должна быть записана как в кэш, так и на диск до его завершения. Эта операция записи учитывается в рамках некэшированного и кэшированного лимитов виртуальной машины.
Диаграмма, показывающая кеширование записи от узла для чтения.
Теперь давайте посмотрим, что происходит с запросами ввода-вывода, если для кэширования узла включен режим Чтение и запись.
Настройка:
- Standard_D8s_v3
- Кэшированные IOPS: 16 000
- Без кэширования IOPS: 12 800
- Диск данных P30
- IOPS: 5000
- Кэширование узла: Чтение и запись
Операция чтения обрабатывается так же, как и операция в режиме "Только чтение". Записи в кэше "Чтение и запись" — это единственное отличие. При установке режима кэширования узла на Чтение и запись, запись считается завершенной, как только данные занесены в кэш узла. Затем данные записываются на диск в фоновом режиме, когда кэш периодически очищается. Клиенты также могут принудительно выполнить очистку, выпустив f/sync
команду или fua
команду. Это означает, что запись учитывается в кэшированных операциях ввода-вывода при записи в кэш. Когда данные лениво записываются на диск, они учитываются в сторону некэшированного ввода-вывода.
Давайте продолжим с нашей виртуальной машиной Standard_D8s_v3. На этот раз мы включаем кэширование на стороне узла на дисках. Ограничение IOPS виртуальной машины составляет 16 000 операций в секунду. К виртуальной машине подключены три базовых диска P30, каждый из которых поддерживает 5000 операций ввода-вывода в секунду.
Настройка:
- Standard_D8s_v3
- Кэшированные IOPS: 16 000
- Операции ввода-вывода в секунду без кеширования: 12 800
- Диск ОС P30
- IOPS: 5000
- Кэширование узла: Чтение и запись
- Два диска данных P30 × 2
- IOPS: 5000
- Кэширование узла: Чтение и запись
Приложение использует виртуальную машину Standard_D8s_v3 с включенным кэшированием. Он делает запрос на 16 000 операций ввода-вывода в секунду. Запросы завершаются, как только они считываются или записываются в кэш. Записи затем постепенно записываются на подключенные диски.
Объединённые ограничения для кэшированных и некэшированных данных
Ограничения виртуальной машины для операций с кэшированием отделены от ее ограничений для операций без кэширования. Это означает, что можно включить кэширование узла на дисках, подключенных к виртуальной машине, не включая кэширование узла на других дисках. Эта конфигурация позволяет виртуальным машинам получить общий объем операций ввода-вывода для хранилища, равный сумме ограничений для операций с кэшированием и без кэширования.
Давайте рассмотрим пример, который поможет понять, как эти ограничения работают вместе. Мы продолжаем с конфигурацией виртуальной машины Standard_D8s_v3 и подключёнными премиальными дисками.
Настройка:
- Standard_D8s_v3
- Кэшированные IOPS: 16 000
- Операции ввода-вывода в секунду без кэширования: 12 800
- Диск ОС P30
- IOPS: 5000
- Кэширование узла: Чтение и запись
- Два диска данных P30 × 2
- IOPS: 5000
- Кэширование узла: Чтение и запись
- Два диска данных P30 × 2
- IOPS: 5000
- Кэширование узла: Отключено
В данном случае приложение, работающее на виртуальной машине Standard_D8s_v3, выполняет запрос на 25 000 операций ввода-вывода в секунду. Этот запрос разбивается на 5000 IOPS для каждого подключенного диска. На трех дисках используется хост-кэширование, а на двух — не используется.
- Поскольку три диска, использующие хранение на узле, находятся в пределах лимита кэшированного объема (16 000), эти запросы выполняются успешно. Ограничения производительности хранилища не происходит.
- Поскольку два диска, которые не используют кэширование хоста, находятся в пределах некэшируемого лимита 12 800, эти запросы также успешно выполняются. Ограничения производительности не происходит.