воскресенье, 20 февраля 2011 г.

SIOC, Storage IO Control

В vSphere 4.1 появилась фича Storage IO Control, SIOC. Я про нее упоминал уже не раз, и еще раз поднимаю эту тему в связи с выходом пары новых документов на эту тему.

Первый - Storage I/O Control Technical Overview and Considerations for Deployment. Небольшой описательный документ. Что это, как включить, рекомендации по настройке.

А вот второй - Managing Performance Variance of Applications Using Storage I/O Control - поинтереснее.

Приводятся результаты нескольких тестов.
Первый:
1) взяли два сервера, создали 4 одинаковых ВМ с Windows 2008 SP1, и приложением DVD Store Version 2. Это тестовое приложение для создания нагрузки, характерной для БД. В состав приложения входят база данных, веб-сервер и что-то там на уровне драйверов, ссылка на сайт. Для каждой из ВМ был создан системный диск, диск с данными приложения и RDM для логов базы (Рис.1). Диски трех типов расположены на отдельных LUN, и нас интересует LUN, или хранилище VMFS, на котором лежат диски с данными.
Рис.1. Схема организации тестированя
Обратите внимание - из четырех тестовых ВМ одна выбрана как критичная.

Задача теста - понять, как SIOC сможет сделать хорошо для критичной ВМ, здесь это VM2.

Первый тест:
Дали нагрузку только для ВМ2 (которая критичная). Полученные цифры используются как точка отсчета - сколько она может получить без конкуренции.
Затем, нагрузку дали на все ВМ одновременно, и померили скорость при выключенном SIOC.
Далее, включили SIOC и замеряли производительность при разных значениях shares для критичной ВМ2. Результаты см. на рис.2.
Рис.2. Результаты теста 1
Как видим, за счет SIOC критичные ВМ, для которых мы выставили большие shares, способны втоптать в пол конкурентов на их iops. Когда у критичной ВМ 4000 shares, а у трех конкурирующих по 200, производительность критичной достигает 94% от ситуации когда она ни с кем не конкурирует (напомню, что речь идет о нагрузочном тестировании - если ВМ2 захочет меньше она будет получать меньше).

Второй тест.
В рамках подготовки ко второму тесту была добавлена еще одна виртуальная машина, еще на одном сервере ESXi, но расположенная на тех же LUN (рис.3).

Рис.3. Схема организации тестов 2 и 3
Теперь эта пятая ВМ была выбрана критичной, и были настроены shares для этой и других ВМ не по умолчанию (рис. 4).
Рис.4. Настройки Shares для теста 2
Затем было начато тестирование, состоящее из трех фаз:
Фаза 1: на всех пяти ВМ была создана нагрузка, в течении 360 секунд.
Фаза 2: на пятой ВМ нагрузка была прекращена, 345 секунд ВМ 5 простаивала.
Фаза 3: пятая ВМ опять получила нагрузку, еще на 360 секунд. Остальные четыре ВМ так же продолжают быть под нагрузкой.

Производительность всех пяти ВМ в этих трех фазах вы видите на рис. 5. Она зависит от shares с рис.4.
Рис.5. Данные теста 2
Вот зачем нужен SIOC.

Если слегка углубиться в подробности работы, то стоит сказать за счет чего работает эта функция. Работает она за счет динамического изменения глубины очереди на HBA серверов. Меньше очередь -> меньше IOps можно отправить на СХД -> решена задача сделать кому-то больше кому-то меньше.

Вот как менялась глубина очереди на трех серверах из теста 2 (рис.6).
Рис.6. Изменение глубины очереди HBA серверов
 Когда пятая ВМ начала простаивать, глубина очереди третьего сервера (где работала она одна) была снижена с 32 до 4.

Третий тест.

В третьем тесте была имитирована такая нагрузка, когда часть пиков нагрузки на ВМ приходится на разные время суток.
Были взяты те же 5 ВМ, пятая была нагружена все время, а остальные четыре - как будто обслуживали разные часовые пояса.
Без SIOC проседания все время нагруженной и важной ВМ 5 составляло до 42% (рис. 7).
Рис.7. Данные третьего теста без SIOC

А с SIOC - вполовину меньше (рис. 8).
Рис.8. Данные третьего теста с SIOC
Ну и связанный с этим показатель - производительность пятого виртуального сервера в это время (рис.9).
Рис.9. Разница в производительности критичного сервера с и без SIOC

Выводы:
Если производительности дисковой подсистемы по факту не достаточно для удовлетворения пиков загрузки нашей виртуальной инфраструктуры, то SIOC позволит существовать в такой ситуации максимально комфортно.





5 комментариев:

  1. Давно было интересно, будет ли работать SIOC на локальных дисках/массивах. Исходя из прочитанного - включать SIOC на локальных дисках безтолку, т.к. очередь к дисковой только одна... Или все же ESX сможет внутри одной очереди выделиь приоритеты?

    ОтветитьУдалить
  2. Насчет работы именно для локального диска точно не помню.

    А вот работа такого механизма для одного сервера (для приватного лун) была организована еще в третьей версии.

    Фишка sioc именно в том, что он работает между серверами.

    ОтветитьУдалить
  3. А SIOC постоянно зависит от vCenter, или нужен только на стадии конфигурации хостов (как для HA)??

    ОтветитьУдалить
  4. судя по той теории, что я помню - только для включения. инфа не 100%

    ОтветитьУдалить
  5. Лучше поздно чем никогда. vCenter 100% нужен только для включения. Видел статью, где показывалось как SIOC включается через командную строку, типа лайф-хак.. SIOC без наличия Enterprise Plus лицензии.

    ОтветитьУдалить