Тестирование платформ ускорения ввода-вывода требует понимания процесса передачи данных. Сравнение путей ввода-вывода традиционных систем хранения данных и нового поколения архитектур хранения показывают, что традиционные тесты производительности не всегда применимы для определения ускорения, получаемого реальными приложениями.
Сравнение путей ввода-вывода
Путь ввода-вывода к и от массива хранения данных достаточно простой. Так как данные располагаются только в одном месте, то операции ввода-вывода проходят предсказуемым маршрутом по архитектуре. Производительность легко предсказуема, так как постоянный путь приводит к повторяемым результатам. Добавление платформы ускорения вводит дополнительный слой между виртуальной машиной и массивом хранения данных, который содержит копию недавно прочитанных или записанных данных и ускоряет операции чтения и записи.
Различные методы тестирования
Существует множество способов протестировать производительность системы хранения данных, два основных метода - использование реальных приложений или синтетических тестов. Лучший метод протестировать производительность приложения с использованием платформы ускорения ввода-вывода - использовать приложения, развернутые в вашей виртуальной инфраструктуре.
Если использовать реальную нагрузку невозможно, то можно применить синтетические тесты. Важно создать такой шаблон нагрузки, который будет отражать реальную нагрузку приложений и сохранит ее характеристики, такие как типы ввода-вывода - чтения или записи, размер ввода-вывода и их зависимости между собой. Убедитесь, что данные обработаны или как минимум запрошены несколько раз, повторяя поведение реального приложения.
Зависимости
Самые главные зависимости - это взаимозависимость данных и внутрипроцессные зависимости. Они не ограничены отдельным приложением и могут существовать как в сложных многоуровневых системах, так и в единичном приложении. Зависимости данных возникают в случае, если выходные данные предыдущего запроса являются входными данными для текущего запроса. Межпроцессные зависимости обычно следуют из зависимостей данных и определяют порядок выполнения операций. В основном именно отсутствие симуляции зависимостей отличает синтетические тесты от тестирования на реальных приложениях. Настоящие приложения могут создавать всплески нагрузки, но обычно они не генерируют значительный объем ввода-вывода в режиме 24/7, так как в них присутствуют процессы, которые требуют время на свое выполнение.
Еще один популярный способ симуляции приложений заключается в использовании записанных операций ввода-вывода (трейсов). Такие операции являются записанной продуктивной нагрузкой, которая может быть воспроизведена в виртуальной инфраструктуре при помощи специализированного приложения. Популярным инструментом воспроизведения для окружения vSphere является vSCSIstats. vSCSIstats - утилита командной строки, доступная в командной строке ESXi. Приложение VMware I/O analyzer может воспроизводить трейс-файлы и доступна на сайте VMware.com. Следует, однако, обратить внимание, что запись ввода-вывода при помощи vSCSIstats является ресурсоемкой операцией и внутрипроцессные взаимодействия не обязательно будут записаны, так как vSCSIstats собирает записи с отдельных дисков.
Не используйте разработанные заранее шаблоны нагрузки
Построение тестового окружения, близко повторяющего продуктивную среду, или сбор правильных профилей нагрузки из нее может быть долгим и сложным процессом. Синтетические тесты, такие как IOrate, FIO и IOmeter, предоставляют простой и быстрый способ измерить уровень производительности системы хранения.
Типичные синтетические тесты создают операции ввода-вывода, но ни коим образом не обрабатывают запрошенные данные. В основе своей их шаблоны нагрузки насыщают очереди ввода-вывода и сетевые соединения в попытке определить максимальное число операций ввода-вывода, задержки и пропускную способность. Измеренная таким способом пропускная способность может не обеспечивать реальных жизненных показателей. Необходимо измерять то, что важно для конечного пользователя – а именно время, затраченное на транзакцию, веб-запрос и т.п.
Рекомендации
Потратьте время на изучение того, как работает ваше приложение, определите какими блоками данных оно оперирует и какое соотношение операций чтения/записи оно использует. Для правильного тестирования вашей платформы ускорения ввода-вывода вам следует изменить шаблоны нагрузки по умолчанию таким образом, чтобы приложение считывало одни и те же данные несколько раз. Это позволяет смоделировать сценарий поведения реальных приложений, по причине наличия зависимостей данных или процессов чтения после записи. Кроме того, выберите правильный размер тестового набора данных, чтобы обработка производилась из дисковой подсистемы, а не из кэша системы хранения данных. Если вы хотите симулировать реальную производительность, то вам не следует ожидать, что все ваши приложения будут находиться в кэше контроллера хранения данных.
Оригинальная статья.
С 2016 года FVP снят с продажи.