Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: ✔️ Виртуальные машины Linux ✔️ Виртуальные машины Windows ✔️ Гибкие группы масштабирования ✔️ Унифицированные группы масштабирования
Тестирование — это процесс моделирования различных рабочих нагрузок в приложении и измерения производительности приложения для каждой рабочей нагрузки. Выполнив действия, описанные в разработке для высокопроизводительной статьи, вы собрали требования к производительности приложения. Выполняя средства тестирования на виртуальных машинах, на которых размещено приложение, можно определить уровни производительности, которые может достичь приложение с помощью дисков SSD уровня "Премиум". В этой статье приведены примеры тестирования Standard_D8ds_v4 виртуальной машины, подготовленной с помощью SSD Azure уровня "Премиум".
Мы использовали общие средства тестирования DiskSpd и FIO для Windows и Linux соответственно. Эти средства порождены несколькими потоками, имитирующими рабочую нагрузку, а также измеряют производительность системы. С помощью инструментов можно также настроить такие параметры, как размер блока и глубина очереди, которые обычно нельзя изменить для приложения. Это обеспечивает большую гибкость для обеспечения максимальной производительности на высокомасштабируемой виртуальной машине, подготовленной с помощью ssd класса Premium для различных типов рабочих нагрузок приложений. Дополнительные сведения о каждом средстве проверки производительности см. в DiskSpd и FIO.
Чтобы выполнить приведенные ниже примеры, создайте Standard_D8ds_v4 и подключите четыре ssd класса Premium к виртуальной машине. Из четырех дисков настройте три с кэшированием узла как "Нет", а затем переместите их в том NoCacheWrites. Настройте кэширование узла как ReadOnly на оставшемся диске и создайте том с именем CacheReads с этим диском. Используя эту настройку, вы можете увидеть максимальную производительность чтения и записи на виртуальной машине Standard_D8ds_v4. Подробные инструкции по созданию Standard_D8ds_v4 с SSD уровня "Премиум" см. в статье "Проектирование для обеспечения высокой производительности".
Разогревайте кэш
Диск с кэшированием узла ReadOnly может дать больше операций ввода-вывода в секунду, чем ограничение на диск. Чтобы получить максимальную производительность чтения из кэша узла, сначала необходимо прогреть кэш этого диска. Это гарантирует, что iOs чтения, которые средство проверки производительности будет использовать в томе CacheReads, фактически попадает в кэш, а не диск напрямую. Попадания в кэш приводят к увеличению числа операций ввода-вывода в секунду на одном диске с поддержкой кэширования.
Это важно
Прежде чем запускать тесты при перезагрузке виртуальной машины, необходимо прогреть кэш.
DISKSPD
Скачайте средство DISKSP на виртуальной машине. DISKSPD — это средство, которое можно настроить для создания собственных синтетических рабочих нагрузок. Мы будем использовать ту же настройку, описанную выше, для выполнения тестов проверки производительности. Спецификации можно изменить для тестирования различных рабочих нагрузок.
В этом примере мы используем следующий набор базовых параметров:
- -c200G: создает (или повторно создает) пример файла, используемого в тесте. Его можно задать в байтах, КиБ, МиБ, ГиБ или блоках. В этом случае большой файл 200-ГиБ-целевого файла используется для минимизации кэширования памяти.
- -w100: указывает процент операций, которые являются заявками на запись (-w0 эквивалентно 100% на чтение).
- -b4K: указывает размер блока в байтах, KiB, MiB или GiB. В этом случае размер блока 4K используется для имитации случайного теста ввода-вывода.
- -F4: задает в общей сложности четыре потока.
- -r: указывает случайный тест ввода-вывода (переопределяет параметр -s).
- -o128: указывает количество невыполненных запросов ввода-вывода на каждый целевой объект в каждом потоке. Это также называется глубиной очереди. В этом случае 128 используется для нагрузки на ЦП.
- -W7200: указывает длительность времени прогревания перед началом измерений.
- -d30: указывает длительность теста, не включая разогрев.
- -Sh: отключение кэширования записи программного и аппаратного обеспечения (эквивалентно -Suw).
Полный список параметров см. в репозитории GitHub.
Максимальное число операций ввода-вывода в секунду (IOPS)
Мы используем высокую глубину очереди 128, небольшой размер блока 8 КБ и четыре рабочих потока для управления операциями записи. Рабочие роли записи обрабатывают трафик на томе NoCacheWrites, который имеет три диска с кэшем, установленным для параметра None.
Выполните следующую команду в течение 30 секунд прогрева и 30 секунд измерения:
diskspd -c200G -w100 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat
Результаты показывают, что Standard_D8ds_v4 виртуальная машина обеспечивает максимальное ограничение операций ввода-вывода в секунду на запись в 12 800.
Максимальное число операций ввода-вывода в секунду
Мы используем высокую глубину очереди 128, небольшой размер блока 4 КБ и четыре рабочих потока для управления операциями чтения. Рабочие роли чтения обрабатывают трафик на томе CacheReads, который имеет один диск с кэшем, равным ReadOnly.
Выполните следующую команду в течение двух часов прогрева и 30 секунд измерения:
diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat
Результаты показывают, что Standard_D8ds_v4 виртуальная машина обеспечивает максимальное ограничение операций ввода-вывода в секунду на чтение 77 000.
Максимальная пропускная способность
Чтобы получить максимальную пропускную способность чтения и записи, можно изменить размер блока размером 64 КБ.
ФИО
FIO — это популярное средство для тестирования хранилища на виртуальных машинах Linux. Она имеет гибкость для выбора различных размеров операций ввода-вывода, последовательных или случайных операций чтения и записи. Он создает рабочие потоки или процессы для выполнения указанных операций ввода-вывода. Можно указать тип операций ввода-вывода для каждого рабочего потока, который должен выполняться с помощью файлов заданий. Мы создали один файл задания для каждого сценария, показанного в приведенных ниже примерах. Спецификации в этих файлах заданий можно изменить для тестирования различных рабочих нагрузок, работающих в хранилище класса Premium. В примерах мы используем Standard_D8ds_v4 под управлением Ubuntu. Используйте ту же настройку, описанную в начале раздела теста теста, и разогрейте кэш перед выполнением тестов теста теста.
Прежде чем начать, скачайте FIO и установите его на виртуальной машине.
Выполните следующую команду для Ubuntu,
apt-get install fio
Мы используем четыре рабочих потока для управления операциями записи и четырьмя рабочими потоками для управления операциями чтения на дисках. Рабочие роли записи ведут трафик на томе nocache, который имеет три диска с кэшем, равным "Нет". Рабочие роли чтения обрабатывают трафик на томе readcache, который имеет один диск с кэшем, заданным как ReadOnly.
Максимальное число операций ввода-вывода в секунду (IOPS)
Создайте файл задания со следующими спецификациями, чтобы получить максимальный объем операций ввода-вывода в секунду. Назовите его "fiowrite.ini".
[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4
[writer1]
rw=randwrite
directory=/mnt/nocache
Обратите внимание на следующие ключевые моменты, которые соответствуют рекомендациям по проектированию, описанным в предыдущих разделах. Эти спецификации необходимы для максимального количества операций ввода-вывода в секунду.
- Высокая глубина очереди 256.
- Небольшой размер блока в 4 КБ.
- Несколько потоков, выполняющих случайные записи.
Выполните следующую команду, чтобы запустить тест FIO в течение 30 секунд,
sudo fio --runtime 30 fiowrite.ini
Во время выполнения теста вы можете видеть количество операций ввода-вывода при записи в секунду (IOPS), которые обеспечиваются виртуальной машиной и дисками класса Premium. Как показано в приведенном ниже примере, виртуальная машина Standard_D8ds_v4 достигает максимального предела на запись в 12 800 операций ввода-вывода в секунду.
Количество операций записи ввода-вывода в секунду (IOPS), выполняемых виртуальными машинами и SSD уровня "премиум", составляет 13,1 тыс. IOPS.
Максимальное число операций ввода-вывода в секунду
Создайте файл задания со следующими спецификациями, чтобы получить максимальный объем операций ввода-вывода в секунду. Назовите его "fioread.ini".
[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4
[reader1]
rw=randread
directory=/mnt/readcache
Обратите внимание на следующие ключевые моменты, которые соответствуют рекомендациям по проектированию, описанным в предыдущих разделах. Эти спецификации необходимы для максимального количества операций ввода-вывода в секунду.
- Высокая глубина очереди 256.
- Небольшой размер блока в 4 КБ.
- Несколько потоков, выполняющих случайные записи.
Выполните следующую команду, чтобы запустить тест FIO в течение 30 секунд,
sudo fio --runtime 30 fioread.ini
Во время выполнения теста вы можете увидеть количество операций чтения ввода-вывода в секунду, которые обеспечивает виртуальная машина и диски Premium. Как показано в приведенном ниже примере, виртуальная машина Standard_D8ds_v4 предоставляет более 77 000 операций ввода-вывода в секунду. Это сочетание диска и производительности кэша.
Максимальное число операций чтения и записи ввода-вывода в секунду
Создайте файл задания с следующими характеристиками, чтобы получить максимальные IOPS для операций чтения и записи. Назовите его "fioreadwrite.ini".
[global]
size=30g
direct=1
iodepth=128
ioengine=libaio
bs=4k
numjobs=4
[reader1]
rw=randread
directory=/mnt/readcache
[writer1]
rw=randwrite
directory=/mnt/nocache
rate_iops=3200
Обратите внимание на следующие ключевые моменты, которые соответствуют рекомендациям по проектированию, описанным в предыдущих разделах. Эти спецификации необходимы для максимального количества операций ввода-вывода в секунду.
- Высокая глубина очереди 128.
- Небольшой размер блока в 4 КБ.
- Несколько потоков, выполняющих случайные операции чтения и записи.
Выполните следующую команду, чтобы запустить тест FIO в течение 30 секунд,
sudo fio --runtime 30 fioreadwrite.ini
Во время тестирования вы можете увидеть количество комбинированных IOPS, обеспечиваемых виртуальной машиной и дисками класса Premium. Как показано в примере ниже, виртуальная машина Standard_D8ds_v4 обеспечивает более 90 000 объединенных операций чтения и записи в секунду. Это сочетание диска и производительности кэша.
Максимальная объединенная пропускная способность
Чтобы получить максимальную объединенную пропускную способность чтения и записи, используйте больший размер блока и большую глубину очереди с несколькими потоками, выполняющими операции чтения и записи. Можно использовать размер блока размером 64 КБ и глубину очереди 128.
Дальнейшие действия
Перейдите к нашей статье по проектированию для высокой производительности.
В этой статье вы создадите контрольный список, аналогичный существующему приложению для прототипа. С помощью средств тестирования можно имитировать рабочие нагрузки и измерять производительность прототипа приложения. Таким образом, вы можете определить, какое предложение диска может соответствовать или превышать требования к производительности приложения. Затем можно реализовать те же рекомендации для рабочего приложения.