Facebook выпустил модуль Flashcache 3.0 для организации кэширования на SSD-накопителях

Социальная сеть Facebook анонсировала новую значительную версию Flashcache 3.0, системы для прозрачного кэширования данных на быстрых SSD-накопителях, оформленной в виде модуля для ядра Linux, использующего фреймворк Device Mapper (DM). Поддерживается как кэширвоание чтения с блочных устройств, так и ускорение записи за счёт предварительного сохранения данных на SSD-накопитель с последующим сбросом данных на диск. Код проекта распространяется под лицензией GPLv2.

На базе новой версии Flashcache в Facebook уже развёрнута система массового кэширования данных, охватывающая тысячи серверов. По сравнению с прошлым выпуском переход на Flashcache 3.0 позволил на 40% снизить число операций чтения при обращении к жестким дискам и на 75% сократить интенсивность ввода/вывода при записи. Благодаря использованию более изощрённого алгоритма для принятия решения по помещению данных в кэш эффективность кэшировния удалось поднять с 60 до 80%, в среднем 80% всех обращений обрабатывается из кэша. Одновременно минимизировано появление невостребованных данных в кэше и осуществлён переход более равномерному распределению по кэшу часто обновляемых данных, что уменьшило нагрузку по записи данных на SSD-накопители и способствует продлению срока их службы.

Отмечается три ключевых улучшения в Flashcache 3.0:

  • Изменён алгоритм заполнения кэша, который позволил обеспечить более равномерное распределение данных. Анализ нагрузки на серверах с MySQL (InnoDB) показал, что большинство операций записи концентрируются в нескольких регионах диска, в то время как операции чтения распределяются по диску неравномерно. В этой ситуации, используемая ранее схема линейного сопоставления 2 Мб блоков на диске с 2 Мб блоками в кэше приводила к тому что определённые области SSD-накопителей использовались излишне интенсивно, в то время как другие области простаивали. Для решения проблемы вместо линейной схемы была задействован метод случайного хэширования, а также изменён размер блоков - блок на диске был уменьшен до 256 Кб, а блок в кэше увеличен до 16 Мб. В итоге, если раньше 80% всех дисковых операций концентрировались в 50% кэша, то теперь 50% кэша охватывает 50% дисковых операций.
  • Переработана организация вытеснения неактуальных данных из кэша, вместо ранее используемого алгоритма FIFO, подразумевающего вытеснение записей по времени их добавления, задействован алгоритм LRU, при котором записи вытесняются на основании давности обращения к ним. При использовании FIFO были нередки случаи когда единичные неактуальные данные замещали активно используемые записи, которые попали в кэш в первую очередь. Теперь в первую очередь из кэша вытесняются давно не используемые записи, независимо от порядка добавления данных в кэш. Задействована реализация LRU-2Q, подразумевающая помещение новых записей не в самый конец очереди на удаление, что позволяет сохранить 25% старых записей и исключить вытеснение старых записей в результате нетипичной пиковой активности, например при перестроении или миграции узла.
  • Увеличение эффективности сброса данных на диск при кэшировании в режиме отложенной записи (write-back).


Источник:
http://www.opennet.ru/opennews/art.shtml?num=38133

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>