flashcache

Поделись знанием:
Перейти к: навигация, поиск

flashcache — модуль для ядра Linux, работающий в стеке Device Mapper, и позволяющий использовать одни блочные устройства для кэширования доступа к другим блочным устройствам. Разработан Facebook и опубликован весной 2010 года на условиях лицензии GPL. Изначально предназначался для использования SSD-накопителей для кэширования обращения к медленным (но значительно более ёмким и дешёвым) дисковым накопителям.

Эффективность применения flashcache зависит от многих факторов, в общем случае, технология помогает в задачах, производительность которых ограничена вводом-выводом, с преобладанием операций чтения, а объём рабочего набора данных слишком велик для кэширования в оперативной памяти. Как у любой технологии кэширования при большом количестве «холодного» (некэшированного) чтения производительность может быть ниже, чем у кэшируемого устройства; для «разогрева» кэша может требоваться значительное время[1].

В отличие от включённых в ядро bcache[en] и dm-cache[en], flashcache требует сборки как отдельный модуль. Форк flashcache — проприетарный EnhanceIO, не исполоьзует Device mapper.



Принцип работы

Flashcache использует модуль отображения устройств Device mapper для создания блочного устройства. При его создании ему передаются два других устройства (как использующих Device Mapper, так и нет). Одно из них является «медленным и большим», второе «маленьким и быстрым» (обычно SSD- или блочным электронным диском). При включённом режиме кэширования каждое обращение к устройству flashcache проверяется на наличие в кэше, и при его наличии в кэше отдаётся оттуда, а не читается с медленного диска. Если же в кэше данные не найдены, то они читаются с медленного диска и записываются в кэш.

Для записи существуют различные политики — в режиме отложенной записи (writeback) данные сначала пишутся в кэширующее устройство, а потом уже в фоновом режиме переносятся оттуда на медленное устройство (обычно значительно бо́льшими блоками и последовательно, что на порядки поднимает производительность жёстких дисков с медленными операциями произвольного доступа, но относительно высокими скоростями последовательного доступа). Помимо этого, «горячие данные» (часто использующиеся данные) часто перезаписываются, что приводит к ситуации, когда данные несколько раз перезаписываются в кэше, а в реальности, на медленное устройство сохраняются только один раз. Ряд параметров отложенной записи доступны для пользовательской настройки.

В режиме сквозной записи (writethrough) данные сначала записываются на медленное устройство, а потом в кэш в расчёте на то, что их в ближайшее время прочтут). Существует также промежуточный режим writearound, когда данные записываются на медленное устройство, а в кэш попадают только после первого чтения.

Кэш поддерживает FILO- и FIFO-алгоритмы вытеснения данных, кроме того, существует возможность ручного сброса кэша. Кэш в режиме отложенный записи является персистентным (сохраняется между перезагрузками) и может быть загружен. Режимы сквозной записи и режим writearound являются неперсистентными, то есть при каждой загрузке кэш нужно создавать заново.

Напишите отзыв о статье "Flashcache"

Примечания

Ссылки

  • [github.com/facebook/flashcache Проект Flashcache] на сайте GitHub  (англ.)
  • [www.facebook.com/note.php?note_id=388112370932 Анонс релиза]  (англ.)
  • [www.oscon.com/oscon2010/public/schedule/detail/15567 Презентация на] OSCON  (англ.)
  • Jeffrey B. Layton [www.linux-mag.com/id/7839/ Hard Drive Caching with SSDs] (англ.) // Linux Magazine. — August 18th, 2010.

Литература

  • Baron Schwartz, Peter Zaitsev, Vadim Tkachenko. High Performance MySQL. — O'Reilly Media, 2012. — 826 с. — ISBN 978-1-4493-1428-6., раздел Solid-State Storage — Using Flashcache


Отрывок, характеризующий Flashcache

Княжна Марья действительно сконфузилась и покраснела пятнами, когда вошли к ней. В ее уютной комнате с лампадами перед киотами, на диване, за самоваром сидел рядом с ней молодой мальчик с длинным носом и длинными волосами, и в монашеской рясе.
На кресле, подле, сидела сморщенная, худая старушка с кротким выражением детского лица.
– Andre, pourquoi ne pas m'avoir prevenu? [Андрей, почему не предупредили меня?] – сказала она с кротким упреком, становясь перед своими странниками, как наседка перед цыплятами.
– Charmee de vous voir. Je suis tres contente de vous voir, [Очень рада вас видеть. Я так довольна, что вижу вас,] – сказала она Пьеру, в то время, как он целовал ее руку. Она знала его ребенком, и теперь дружба его с Андреем, его несчастие с женой, а главное, его доброе, простое лицо расположили ее к нему. Она смотрела на него своими прекрасными, лучистыми глазами и, казалось, говорила: «я вас очень люблю, но пожалуйста не смейтесь над моими ». Обменявшись первыми фразами приветствия, они сели.
– А, и Иванушка тут, – сказал князь Андрей, указывая улыбкой на молодого странника.
– Andre! – умоляюще сказала княжна Марья.
– Il faut que vous sachiez que c'est une femme, [Знай, что это женщина,] – сказал Андрей Пьеру.
– Andre, au nom de Dieu! [Андрей, ради Бога!] – повторила княжна Марья.
Видно было, что насмешливое отношение князя Андрея к странникам и бесполезное заступничество за них княжны Марьи были привычные, установившиеся между ними отношения.
– Mais, ma bonne amie, – сказал князь Андрей, – vous devriez au contraire m'etre reconaissante de ce que j'explique a Pierre votre intimite avec ce jeune homme… [Но, мой друг, ты должна бы быть мне благодарна, что я объясняю Пьеру твою близость к этому молодому человеку.]
– Vraiment? [Правда?] – сказал Пьер любопытно и серьезно (за что особенно ему благодарна была княжна Марья) вглядываясь через очки в лицо Иванушки, который, поняв, что речь шла о нем, хитрыми глазами оглядывал всех.
Княжна Марья совершенно напрасно смутилась за своих. Они нисколько не робели. Старушка, опустив глаза, но искоса поглядывая на вошедших, опрокинув чашку вверх дном на блюдечко и положив подле обкусанный кусочек сахара, спокойно и неподвижно сидела на своем кресле, ожидая, чтобы ей предложили еще чаю. Иванушка, попивая из блюдечка, исподлобья лукавыми, женскими глазами смотрел на молодых людей.
– Где, в Киеве была? – спросил старуху князь Андрей.
– Была, отец, – отвечала словоохотливо старуха, – на самое Рожество удостоилась у угодников сообщиться святых, небесных тайн. А теперь из Колязина, отец, благодать великая открылась…
– Что ж, Иванушка с тобой?
– Я сам по себе иду, кормилец, – стараясь говорить басом, сказал Иванушка. – Только в Юхнове с Пелагеюшкой сошлись…
Пелагеюшка перебила своего товарища; ей видно хотелось рассказать то, что она видела.
– В Колязине, отец, великая благодать открылась.
– Что ж, мощи новые? – спросил князь Андрей.
– Полно, Андрей, – сказала княжна Марья. – Не рассказывай, Пелагеюшка.
– Ни… что ты, мать, отчего не рассказывать? Я его люблю. Он добрый, Богом взысканный, он мне, благодетель, рублей дал, я помню. Как была я в Киеве и говорит мне Кирюша юродивый – истинно Божий человек, зиму и лето босой ходит. Что ходишь, говорит, не по своему месту, в Колязин иди, там икона чудотворная, матушка пресвятая Богородица открылась. Я с тех слов простилась с угодниками и пошла…
Все молчали, одна странница говорила мерным голосом, втягивая в себя воздух.
– Пришла, отец мой, мне народ и говорит: благодать великая открылась, у матушки пресвятой Богородицы миро из щечки каплет…