В 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, на котором лежат диски с данными.
Обратите внимание - из четырех тестовых ВМ одна выбрана как критичная.
Задача теста - понять, как SIOC сможет сделать хорошо для критичной ВМ, здесь это VM2.
Первый тест:
Дали нагрузку только для ВМ2 (которая критичная). Полученные цифры используются как точка отсчета - сколько она может получить без конкуренции.
Затем, нагрузку дали на все ВМ одновременно, и померили скорость при выключенном SIOC.
Далее, включили SIOC и замеряли производительность при разных значениях shares для критичной ВМ2. Результаты см. на рис.2.
Как видим, за счет SIOC критичные ВМ, для которых мы выставили большие shares, способны втоптать в пол конкурентов на их iops. Когда у критичной ВМ 4000 shares, а у трех конкурирующих по 200, производительность критичной достигает 94% от ситуации когда она ни с кем не конкурирует (напомню, что речь идет о нагрузочном тестировании - если ВМ2 захочет меньше она будет получать меньше).
Второй тест.
В рамках подготовки ко второму тесту была добавлена еще одна виртуальная машина, еще на одном сервере ESXi, но расположенная на тех же LUN (рис.3).
Теперь эта пятая ВМ была выбрана критичной, и были настроены shares для этой и других ВМ не по умолчанию (рис. 4).
Затем было начато тестирование, состоящее из трех фаз:
Фаза 1: на всех пяти ВМ была создана нагрузка, в течении 360 секунд.
Фаза 2: на пятой ВМ нагрузка была прекращена, 345 секунд ВМ 5 простаивала.
Фаза 3: пятая ВМ опять получила нагрузку, еще на 360 секунд. Остальные четыре ВМ так же продолжают быть под нагрузкой.
Производительность всех пяти ВМ в этих трех фазах вы видите на рис. 5. Она зависит от shares с рис.4.
Вот зачем нужен SIOC.
Если слегка углубиться в подробности работы, то стоит сказать за счет чего работает эта функция. Работает она за счет динамического изменения глубины очереди на HBA серверов. Меньше очередь -> меньше IOps можно отправить на СХД -> решена задача сделать кому-то больше кому-то меньше.
Вот как менялась глубина очереди на трех серверах из теста 2 (рис.6).
Когда пятая ВМ начала простаивать, глубина очереди третьего сервера (где работала она одна) была снижена с 32 до 4.
Третий тест.
В третьем тесте была имитирована такая нагрузка, когда часть пиков нагрузки на ВМ приходится на разные время суток.
Были взяты те же 5 ВМ, пятая была нагружена все время, а остальные четыре - как будто обслуживали разные часовые пояса.
Без SIOC проседания все время нагруженной и важной ВМ 5 составляло до 42% (рис. 7).
А с SIOC - вполовину меньше (рис. 8).
Ну и связанный с этим показатель - производительность пятого виртуального сервера в это время (рис.9).
Выводы:
Если производительности дисковой подсистемы по факту не достаточно для удовлетворения пиков загрузки нашей виртуальной инфраструктуры, то 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 |
Второй тест.
В рамках подготовки ко второму тесту была добавлена еще одна виртуальная машина, еще на одном сервере ESXi, но расположенная на тех же LUN (рис.3).
Рис.3. Схема организации тестов 2 и 3 |
Рис.4. Настройки Shares для теста 2 |
Фаза 1: на всех пяти ВМ была создана нагрузка, в течении 360 секунд.
Фаза 2: на пятой ВМ нагрузка была прекращена, 345 секунд ВМ 5 простаивала.
Фаза 3: пятая ВМ опять получила нагрузку, еще на 360 секунд. Остальные четыре ВМ так же продолжают быть под нагрузкой.
Производительность всех пяти ВМ в этих трех фазах вы видите на рис. 5. Она зависит от shares с рис.4.
Рис.5. Данные теста 2 |
Если слегка углубиться в подробности работы, то стоит сказать за счет чего работает эта функция. Работает она за счет динамического изменения глубины очереди на HBA серверов. Меньше очередь -> меньше IOps можно отправить на СХД -> решена задача сделать кому-то больше кому-то меньше.
Вот как менялась глубина очереди на трех серверах из теста 2 (рис.6).
Рис.6. Изменение глубины очереди HBA серверов |
Третий тест.
В третьем тесте была имитирована такая нагрузка, когда часть пиков нагрузки на ВМ приходится на разные время суток.
Были взяты те же 5 ВМ, пятая была нагружена все время, а остальные четыре - как будто обслуживали разные часовые пояса.
Без SIOC проседания все время нагруженной и важной ВМ 5 составляло до 42% (рис. 7).
Рис.7. Данные третьего теста без SIOC |
А с SIOC - вполовину меньше (рис. 8).
Рис.8. Данные третьего теста с SIOC |
Рис.9. Разница в производительности критичного сервера с и без SIOC |
Выводы:
Если производительности дисковой подсистемы по факту не достаточно для удовлетворения пиков загрузки нашей виртуальной инфраструктуры, то SIOC позволит существовать в такой ситуации максимально комфортно.
Давно было интересно, будет ли работать SIOC на локальных дисках/массивах. Исходя из прочитанного - включать SIOC на локальных дисках безтолку, т.к. очередь к дисковой только одна... Или все же ESX сможет внутри одной очереди выделиь приоритеты?
ОтветитьУдалитьНасчет работы именно для локального диска точно не помню.
ОтветитьУдалитьА вот работа такого механизма для одного сервера (для приватного лун) была организована еще в третьей версии.
Фишка sioc именно в том, что он работает между серверами.
А SIOC постоянно зависит от vCenter, или нужен только на стадии конфигурации хостов (как для HA)??
ОтветитьУдалитьсудя по той теории, что я помню - только для включения. инфа не 100%
ОтветитьУдалитьЛучше поздно чем никогда. vCenter 100% нужен только для включения. Видел статью, где показывалось как SIOC включается через командную строку, типа лайф-хак.. SIOC без наличия Enterprise Plus лицензии.
ОтветитьУдалить