Библиотека сайта rus-linux.net
Infinispan
Оригинал: InfinispanАвтор: Manik Surtani
Перевод: А.Панин
Тестирование производительности Infinispan
Главной проблемой при тестировании производительности операций с такой распределенной структурой данных, как та, что создается при эксплуатации Infinispan, является отсутствие необходимых инструментов. Существует очень мало инструментов, которые позволят вам измерить производительность механизмов сохранения и передачи данных в ходе уменьшения и последующего увеличения объема хранилища этих данных. Также не существует инструментов, позволяющих производить сравнительный анализ, полезный для измерения и сравнения производительности платформы при использовании различных конфигураций, размеров кластера, и.т.д. Для упрощения работы, связанной с выполнением подобного тестирования, был разработан инструмент под названием "Radar Gun".
Инструмент Radar Gun будет более подробно рассмотрен в разделе с соответствующим названием "Radar Gun". Другие инструменты, которые будут упоминаться в данном разделе - Yahoo Cloud Serving Benchmark, The Grinder и Apache JMeter не будут рассматриваться достаточно подробно, хотя они также очень важны для процесса тестирования производительности платформы Infinispan. В уже сети существует большое количество литературы, посвященной им.
Radar Gun
Radar Gun [https://github.com/radargun/radargun/wiki] является фреймворком для тестирования производительности с открытым исходным кодом, спроектированным для выполнения сравнительных (а также конкурентных) тестов производительности, предназначенных для оценки возможностей масштабирования платформы и генерации отчетов на основе собранных в ходе тестирования данных. Radar Gun специально предназначался для работы с такими платформами, формирующими распределенные структуры данных, как Infinispan и постоянно использовался в процессе разработки Infinispan для идентификации и исправления проблем с производительностью. Обратитесь к разделу "Radar Gun" с более подробным описанием инструмента Radar Gun.
Yahoo Cloud Serving Benchmark
Yahoo Cloud Serving Benchmark [https://github.com/brianfrankcooper/YCSB/wiki] (YCSB) является инструментом с открытым исходным кодом, созданным для измерения задержек при взаимодействии с удаленным хранилищем данных в процессе чтения и записи блоков данных различных размеров. Инструмент YCSB рассматривает все хранилища данных как единую удаленную конечную точку, поэтому он даже не пытается оценить возможности масштабирования в процессе добавления или удаления узлов из кластера. Так как в рамках YCSB не вводится концепции распределенной структуры данных, этот инструмент полезен исключительно для тестирования производительности платформы Infinispan, работающей в режиме клиент/сервер.
The Grinder и Apache JMeter
The Grinder [http://grinder.sourceforge.net/] и Apache JMeter [http://jmeter.apache.org/] являются двумя простыми генераторами нагрузки с открытым исходным кодом, которые могут использоваться для тестирования любых серверов, ожидающих соединения с сокетом. Поведение этих инструментов может в значительной степени изменяться с помощью специальных сценариев и, как и в случае с YCSB, они полезны для тестирования платформы Infinispan, работающей в режиме клиент/сервер.
Radar Gun
Ранние этапы развития
Созданный участниками команды разработки Infinispan, инструмент Radar Gun начал свое существование в форме проекта на SourceForge под названием "Cache Benchmarking Framework" [http://sourceforge.net/projects/cachebenchfwk/] и был изначально предназначен для тестирования производительности внутренних кэшей виртуальной машины Java, используемых при работе в различных режимах в различных конфигурациях. Он проектировался с целью осуществления сравнительного тестирования, поэтому автоматически выполнял один и тот же тест с использованием различных библиотек кэширования - или различных версий одной и той же библиотеки с целью выявления регрессий в плане производительности.
С момента создания он получил новое имя (Radar Gun), новую домашнюю страницу на хостинге GitHub и множество новых возможностей.
Распределенные возможности
Вскоре возможности Radar Gun были расширены для поддержки распределенных структур данных. Все еще работая с встроенными библиотеками, инструмент Radar Gun имел возможность запускать множество экземпляров фреймворка на различных серверах, которые в свою очередь, использовали экземпляры библиотеки распределенного кэширования. После этого тесты производительности выполнялись в параллельном режиме на каждом из узлов кластера. В конечном счете контроллером RadarGun производились сбор результатов и генерация отчетов. Возможность автоматически подключать и отключать узлы является критической для оценки возможностей масштабирования, так как запуск и перезапуск тестов в ручном режиме на кластерах различных размеров от двух до сотен или даже тысяч узлов, является непрактичным и в некоторых случаях невыполнимым.
Рисунок 7.3 - Инструмент Radar Gun
Быстрое и некорректное тестирование неприемлемо!
Впоследствии фреймворк Radar Gun получил возможность проверки состояния кластера до и после выполнения каждого из этапов тестирования производительности для получения гарантии того, что кластер находится в нормальном состоянии в течение всего процесса тестирования. Эта возможность позволила выявлять некорректные результаты на ранних этапах и повторно запускать тест производительности без ожидания человеческого вмешательства, которое может растянуться на несколько часов после завершения тестирования.
Профилирование
Radar Gun также имеет возможность создавать экземпляры процесса профайлера и привязывать их к каждому из узлов грид-платформы для сбора данных профилирования, которые могут быть полезны для углубленного изучения процессов, происходящих на каждом узле при наличии нагрузки.
Производительность механизма управления памятью
Radar Gun также имеет возможность измерять объем используемой памяти для каждого узла, а также измерять производительность механизма управления памятью. При работе с хранилищем данных, использующим оперативную память, производительность механизма управления памятью определяет не только то, как быстро вы сможете читать и записывать данные, но и то, насколько оптимально потребление памяти создаваемой для хранения данных структурой. Это особенно актуально при работе с системами, разработанными с использованием языка программирования Java, так как подсистема сборки мусора может оказывать неблагоприятное влияние на производительность системы. Процесс работы сборщика мусора будет обсуждаться более подробно позднее.
Метрики
Radar Gun измеряет производительность в транзакциях в секунду. Эти измерения производятся на каждом узле, после чего систематизируются на контроллере. Измерения как производительности операций чтения, так и производительности операций записи производятся и систематизируются раздельно даже в том случае, если они производятся одновременно (для того, чтобы приблизить тест к реальным условиям, когда подобные операции чередуются). Radar Gun также вычисляет средние, медианные и стандартные отклонения, минимальные и максимальные величины производительности транзакций чтения и записи, которые также заносятся в журнал, хотя могут и не отражаться на графиках. Производительность механизма управления памятью также вычисляется на основе данных каждой из итераций теста.
Расширение возможностей
Radar Gun является расширяемым фреймворком. Он позволяет вам использовать ваши собственные механизмы доступа к данным, типы данных и их размеры. Более того, он позволяет вам добавлять модули для поддержки любой структуры данных, кэширующей библиотеки или базы данных NoSQL, которую вы хотели бы протестировать.
Конечным пользователям также обычно приходится использовать Radar Gun при появлении необходимости сравнения производительности различных конфигураций грид-платформы для хранения данных.
Продолжение статьи: Наиболее подозрительные подсистемы.