Skip to content

Vatson112/openstack-block-bench

Repository files navigation

Openstack Block Benchmark

Terraform проект предназначен для тестирования производительности блочных устройств в Openstack.

Принцип работы:

  • Создается security_group для доступа к fio-server и ssh
  • Создается instance_num кол-во ВМ, используя flavor_id, network_id, image_id
  • Через cloud-init передается конфигурация root_pass, custom_repos(опционально), ставится fio
  • Для каждой ВМ создается один volume размером volume_size
  • По ssh на каждой машине запускается fio-server
  • С локальной машины запускается fio-client и передает выбранный test_type
  • Output теста записывается в директорию results_dir в формате fio_output_format

Требования к запуску

  • На хостовой машине должен быть установлен fio той же версии.
  • Рабочий кластер Openstack + Cinder

Как использовать

  1. Заполнить ENV переменные для авторизации в кластере openstack.
source creds.sh.example
  1. Создать файл terraform.tfvars. Заполнить в соответствии с вашими требованиями.

  2. Подгрузить требуемые зависимости

terraform init
  1. Запустить

Обязательно задать паралелизм равный кол-ву инстансов (instance_num). По умолчанию у terraform parellelism=10.

terraform apply -parallelism=n

Описание переменных

Название Обязательная Описание
instance_name нет Шаблон имени ВМ
image_id Да Используемый image в openstack
flavor_id Да Используемый image в openstack
network_id Да Используемая сеть в openstack
instance_num Нет Кол-во ВМ
volume_size Нет Размер volume
security_groups Нет Список дополнительных security_group
root_pass Нет Пароль для пользователя ВМ
test_type Да Тип теста для запуска
custom_repos_type Нет Тип дополнительных репозиториев, если нужно
custom_repos Нет Список репозиториев
fio_output_format Нет Формат вывода результатов тестирования fio
results_dir Нет Локальная директория с результатами тестирования

Пример файла переменных

instance_num  = 3
instance_name = "perf-test"
flavor_id     = "bf17125b-08e3-471e-abfc-ba4a772c95a7"
network_id    = "11bcb688-74a5-4427-bdde-1fcc1ebb72ee"
security_groups = [
  "test-security-group"
]
image_id    = "98493ea4-e926-4ab0-bbdb-b968156e2585"
root_pass = "root"
volume_size = 10
test_type   = "rw"

custom_repos = [{
  name     = "el9-baseos"
  url      = "http://repo/el9-baseos/"
  enabled  = true
  gpgcheck = false
  }, {
  name     = "el9-appstream"
  url      = "http://repo/el9-appstream/"
  enabled  = true
  gpgcheck = false
}]

Описание подготовленных тестов

Заполнение и насыщение AFA массива (WSAT)

Заполнение и насыщение массива (WSAT/Preconditioning) – подготовительная процедура перед тестированием AFA-массивов, подразумевающая перевод массива из состояния PURGE/FOB в состояние STEADY STATE. Применяются разные технологии насыщения и заполнения массива (разный размер блока, последовательное или рандомное обращение к ячейкам flash-памяти и т.д.), но учитывая принадлежность массива к midrange-level системам хранения и текущий профиль нагрузки, выбран размер блока 256k для данного теста и последовательная запись. Записываем в каждую ячейку последовательно указанным ранее блоком, равномерно заполняя выделенный объем хранилища до отметки 81%. Из данного этапа мы можем примерно понять какая рабочая пропускная способность шины подключения дисков.

Перезапись и устаревание данных (Aging data)

Перезапись или устаревание данных – один из самых важных этапов в тестировании AFA-массива, подразумевающий перезапись имеющихся данных, которые были записаны на массив в предыдущем этапе тестирования – WSAT/Independent Preconditioning. Данный этап важен ввиду специфики работы NAND-памяти. Умышленно не используется файловая система ни на уровне виртуализации, ни на уровне операционной системы. Перезапись данных начнется с самого начала адресации LBA и это неминуемо вызовет P/E Cycle, что в дальнейшем повлечет за собой включение процесса Garbage Collection и значительное усиление Wear Leveling, что, собственно, нам и нужно.

Профилированная нагрузка (Read/Write profile)

Профилированная нагрузка – этап тестирования системы хранения, которая покажет производительность массива поблочно, манипулируя потоком чтения/записи в процентном соотношении. В данном тесте исключен полностью последовательный профиль обращения к массиву, он крайне редко применим, но часть результатов есть в разделе «Заполнение и насыщение массива». Так же исключены профили со 100% чтением и 100% записью, они не применяются в нашей инфраструктуре.

Выбраны 3 основных профиля коррелирующие с нашей нагрузкой: read20%+write80%, read50%+write50% read80%+write20% для основных рабочих блоков 8/16/64k.

Стабильность массива (Steady state)

Стабильность массива – это производительность системы хранения при заполненности свыше 80% и применении рабочей нагрузки. Стабильность массива гарантируется при одном важном условии: на массив в меньше степени пишутся новые данные сверх установленного порога, все операции на запись носят характер «изменить блок» по полному циклу P/E.

About

Benchmark openstack volumes with fio.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published