FAST Cache: мифы, архитектура, применение. Часть 3.1

Продолжаем серию статей о FAST Cache.
В этой части я, наконец, добрался до вкусного, и пришло время подробно обсудить архитектуру кэша на флэш дисках и ее ограничения. Итак…

Идея

FAST Cache это специализированный уровень хранения, организованный на флэш-дисках, обновляемый в реальном времени в соответствии с изменяющимся распределением нагрузки на адресное пространство, таким образом, чтобы обслуживать запросы к наиболее часто используемым блокам данных максимально быстро с точки зрения приложений и с наименьшими накладными расходами с точки зрения контроллеров СХД.

Хранение

Доступные на рынке флэш-диски разделяются на два технологических типа: более дорогие SLC (Single Level Cell) и менее дорогие MLC (Multi Level Cell).
В качестве носителя для FAST Cache используются флэш-диски на базе SLC, потому что они превосходят MLCв несколько раз по таким важным критериям, как
а) время перезаписи ячейки (2 мс по сравнению с 7 мс)
б) устойчивость к износу (100 тысяч перезаписей по сравнению с 10-30 тыс)

Ресурс в 100 тысяч перезаписей позволяет SLC флэш-диску работать в непрерывном режиме записи в течение 3х лет, а в более реалистичном режиме — 50% чтения и 50% записи – около 6 лет.

Самые надежные e-MLC диски работали бы в таком режиме порядка 1-2х лет, что, конечно же, не может удовлетворить требованиям надежности. Поэтому для FAST Cache используются и будут продолжать использоваться SLC диски.

Защита от отказов

Защита обеспечивается при помощи знакомых нам RAID технологий, а именно, зеркалирования. Выбор в пользу защиты зеркалом вместо RAID с четностью достаточно очевиден, ведь зеркало по сравнению в 2 раза быстрее работает в режиме случайной записи по сравнению с RAID5, и в 3 раза быстрее чем RAID6, обеспечивая при этом достаточно высокий уровень защиты.

Кстати, интересно отметить, что используется зеркало именно RAID-1, а не RAID1/0. Это значит, что флэш-диски организуются в зеркальные пары без последующего размазывания RAID0.

Зачем? А затем, чтобы было удобнее расширять FAST Cache. Если бы был RAID1/0, то добавление новых флэш дисков в FAST Cache приводило бы к принудительному «переразмазыванию» уже имеющихся данных. Такое «переразмазывание» не только не имеет в данном случае никакого практического смысла, но и было бы очень вредным, потому что создавало бы дополнительную системную нагрузку на весьма нагруженный уровень хранения. Уровень, который, не будем забывать, создан для того, чтобы работать за весь массив. Как говорится, «дядя Вова, Скрипач не нужен»…

И вот, благодаря тому, что используется RAID1 и когда у нас диски добавляются в уровень FAST Cache в качестве независимых отказоустойчивых пар, то «переразмазывания» не требуется, и флэш диски сразу могут быть использованы для кэширования, а мы сочетаем приятное с полезным.

Внутренняя организация — гранулярность

Минимальный блок данных, с которым оперирует FAST Cache, равен 64КБ. Это значит, что все адресное пространство, за которым следит FAST Cache, условно бьется на кусочки по 64КБ, и для каждого такого кусочка ведется статистика обращений. Для ведения и хранения этой статистики используется оперативная память и процессорные циклы контроллеров.

Если полезная емкость, составляет, скажем, 100ТБ, то это будет соответствовать 1.7 млрд 64КБ блоков для каждого из которых, определенным образом, ведется история. А так как реальная емкость массива может составлять сотни ТБ, то реально был повод задуматься над тем, какой размер блока выбирать для FAST Cache. Чем больше блок, тем меньше накладных расходов, но и точность статистики расплывается по большим сегментам данных. Чем блок меньше – тем лучше точность статистики, но выше накладные расходы.

Так, например, для технологии FAST VP выбрали размер блока 1ГБайт, чтобы снизить накладные расходы, что до сих пор вызывает критику (с моей точки зрения необоснованную).

А вот для FAST Cache разработчики остановились на 64КБ, что, как мне очень хочется надеяться, явилось результатом старательно найденного баланса между получаемым выигрышем и накладными расходами на его обеспечение. Хочется надеяться, потому что этот размер блока зашит в FATS Cache жестко, и поменять его в системе нельзя (по крайней мере, на сегодняшний день).

Полезное пространство флэш-дисков, используемых для FAST Cache, разбивается на такие же логические блоки по 64КБ, и после этого они готовы для приема данных.

Ведение статистики

Внутри каждого 64КБ отслеживаемого блока данных, пользователи могут обращаться к разным его частям, и любое такое обращение будет засчитано. Т.е. это могут быть обращения к блокам меньшего размера, например 8 или 16 КБ. Причем одно обращение засчитывается один раз на каждый блок, невзирая на размер запрашиваемого блока.

Таблицы со статистикой обращений находятся в кэш-памяти контроллеров, и зеркалируются, так как логика FAST Cache полностью устойчива к отказам контроллеров (об этом чуть позже будет подробнее).

Статистика представляет собой число обращений к блокам. Причем, чтобы оптимизировать расход системных ресурсов, для блоков, к которым обращений не было – статистика не ведется, и ресурсы не выделяются до того момента, пока таковое обращение не произошло. Как только к блоку случилось обращение, ему выделяется место в таблице потенциальных кандидатов на продвижение в FAST Cache.

Таблицы FAST Cache

В такой таблице содержится указатель на номер луна и логический адрес данного блока, наряду с информацией о том, сколько раз и когда к этому блоку происходили обращения по сравнению с другими блоками.

Важно отметить, что перед системой вовсе не стоит задача замерять и сохранять реальное время каждого обращения – это было бы очень дорого с точки зрения процессора. Есть более простые алгоритмы, позволяющие ранжировать блоки по относительной частоте обращений.

В итоге, в «таблице кандидатов» ближе всех к продвижению в FAST Cache будут те блоки, к которым было больше всех обращений, причем, чем более недавние обращения, тем больше шансов на продвижение.

Кроме таблицы кандидатов FAST Cache, есть еще таблица «резидентов», то есть блоков, которые были продвинуты до уровня быстрого хранения, и там в настоящее время проживают. Задачей алгоритма FAST Cache является:
А) максимальное заполнение этого уровня
Б) данные для заполнения отбираются по критерию наибольшей востребованности в дальнейшем
В) адаптация к изменениям в реальном времени при минимуме накладных расходов

Исключения

Максимальный размер запроса, для которого ведется статистика, составляет 128 КБ.
Обращения большего, чем 128КБ размера в статистику FAST Cache не считаются, но движком отслеживаются (ага, пустая трата времени).
Начиная с версии микрокода VNX OE 32 из статистики исключаются последовательные цепочки запросов. То есть, например, последовательное чтение внутри одного 64КБ куска 8ми сегментов по 8КБ не приведет к поднятию этого блока в FAST Cache, так как согласно статистике последовательные цепочки исключительно редко читаются более 1 раза.

Продолжение следует…

FAST Cache: мифы, архитектура, применение. Часть 3.1: 4 комментария

  1. Денис, доброго времени суток. А можете в перспективе этого года сделать обзорную статью про VFcache в разрезе практического применения, а так же сравнения с технологичностью и высокой производительностью Storwize и наличия на рынке общедоступных PCI-SSD дисков.

    • Дмитрий, спасибо за отклик! Взял на заметку. Статья будет обязательно. Надеюсь, через неделю-две. Если будут еще идеи — пишите!

  2. Денис, можете прокомментировать как описанное в разделе «Защита от отказов» увеличение размера FAST Cache парами дисков соотносится с описанным на стр. 13 http://www.emc.com/collateral/software/white-papers/h8046-clariion-celerra-unified-fast-cache-wp.pdf, что изменение размера производится путем удаления и повторного создания? ОЕ 5.32.000.5.201.
    Где прячется эта «секретная кнопка»?

    • Добрый день, Александр! Спасибо за комментарий, я очень рад что вы обратили мое внимание на этот нюанс. Этого функционала действительно нет в данный момент. Я отредактировал кусок поста, где про него говорится.
      Еще раз спасибо!

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s