понедельник, 30 июля 2012 г.

Как работает Storage IO Control (SIOC)

В vSphere есть отличная функция Storage IO Control, которая используется для предотвращения захвата всей пропускной способности одной виртуальной машиной или хостом. Для определения момента захвата ресурсов одним источником SIOC мониторит задержки работы СХД, и после определённого порога урезает глубину очереди к массиву.

Вопрос в том, какие именно метрики задержек отслеживаются SIOC - среднее время ответа устройства (DAVG), время ответа ядра (KAVG) или задержки ВМ (GAVG)?


На самом деле ни одна из них. Все они являются локальными метриками планировщика ресурсов, которые и отвечает за отправку всех запросов к СХД. Основная же задача SIOC - управлять ресурсами общей СХД между несколькими ESXi хостами, предоставляя IO ресурсы для всех ВМ независимо от того на каком хосте они работают. И так как SIOC должен регулировать и приоритезировать доступ к общему хранилищу нескольких ESXi хостов, локальные метрики хоста игнорируются. Но какие же, в таком случае, используются метрики? По сути, пороговое значение сравнивается со средним значением DAVG на каждом хосте и средним количеством IOPS на хосте.


Среднее время задержки ввода-вывода
Для отслеживания нагрузки, создаваемой datastore на массив, SIOC использует среднее значение задержек ввода-вывода данного хоста, замерянное каждым сервером, подключённым к данному datastore. Значение средних задержек хостов используется для объединения разных типов нагрузок, характеристик активных нагрузок, таких как соотношения операций чтения и записи, размер блока ввода-вывода и процент последовательности данных. Также учитываются свойства массива, такие как местоположение блока данных, политики кеширования и планирование операций ввода-вывода.

Для подсчёта и нормализации данных о среднем уровне задержек между хостами, каждый сервер записывает данные о средних задержках и количестве IO для каждого отдельного datastore в файл IORMSTATS.SF, хранящийся на отслеживаемом datastore.


Часто встречаемое ошибочное мнение, что SIOC считается на уровне кластера. На самом деле процесс определения задержек к кластеру описывает основной принцип: ...всех хостов, подключённых к данному datastore. То есть, в файл IORMSTATS.SF пишут свои данные все хосты, вне зависимости от членства в кластере. vCenter  не нужен для нормального операционирования SIOC, а нужен только для включения. Хосты открывают данный файл каждые 4 секунды, и сами подсчитывают среднее значение, которое и используется потом для регулирования полосы пропускания. Таким образом, членство в кластере становится не обязательным.

Нормализированные задержки ввода-вывода данных с datastore
Вернёмся к процессу подсчёта нормализованных задержек доступа. Средний уровень задержек каждого хоста нормализируется SIOC согласно объёму запрашиваемых данных. Как уже упоминалось, все нагрузки на массив разные. Например, запрос большого блока данных данных ввода-вывода приведёт к большим задержкам просто из-за обработки массивом такой нагрузки. Например, запрос блока в 256кб может быть разбит массивом на несколько блоков по 64кб. Эта операция приведёт к снижению скорости передачи и пропускной способности, увеличивая задержки. Это позволяет SIOC отличать высокий уровень задержек на устройстве от фактической перегрузки на самом устройстве.

Количество операций ввода-вывода выполненных за секунду
На данном этапе у SIOC уже есть нормализированное значение среднего уровня задержек между хостами, основанное на размере запрашиваемых блоков данных, и следующий шаг - определить общее количество IOPS отправляемых к datastore. Так как каждый хост сообщает о количестве выполненных IO операций за секунду, эта метрика и используется для сравнения и приоритезации нагрузок.

Оригинал: http://frankdenneman.nl/

2 комментария:

  1. Спасибо за статью. Вы немогли бы рассказать о настройке SIOC?

    ОтветитьУдалить
  2. Всегда пожалуйста.
    SIOC не настраивается почти - просто включается и выставляется максимальное пороговое значение. Всё остальное система делает сама.

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