WikiDer > Flashcache
Эта статья должна быть обновлено.Декабрь 2013) ( |
Flashcache это дисковый кеш компонент для Ядро Linux, первоначально разработанная Facebook с апреля 2010 года и выпущен как Открытый исходный код в 2011 году. С января 2013 года существует форк Flashcache под названием EnhanceIO и разработан sTec, Inc.[1]
Flashcache работает с использованием флэш-память, а флешка, SD Card, CompactFlash или любой другой переносной флеш-накопитель в качестве постоянного кэша с обратной записью. Внутренний SSD также может использоваться для повышения производительности.
Обзор
Использование флэш-памяти (Память NAND devices) для кэширования позволяет ядру Linux обслуживать произвольный ввод-вывод диска с лучшей производительностью, чем без кеша. Это кеширование применяется ко всему содержимому диска, а не только к файлу подкачки или системным двоичным файлам. Устройства на основе флэш-памяти обычно намного быстрее вращающихся жестких дисков для произвольного ввода-вывода, но с меньшим преимуществом или даже медленнее при последовательном чтении / записи. По умолчанию flashcache кэширует все операции ввода-вывода с полным размером блока, но ее можно настроить для кэширования только случайных операций ввода-вывода при игнорировании последовательного ввода-вывода.[2]
Подобная технология существует в Майкрософт Виндоус в качестве ReadyBoost поскольку Виндоус виста.
Выполнение
Flashcache построен на основе ядра Linux. сопоставитель устройств. Структура данных кеша - это набор-ассоциативный хеш-таблица, в котором кеш разделен на несколько наборов фиксированного размера (сегментов), используя линейное зондирование в наборе, чтобы найти блоки. Уровень сопоставления устройств разбивает все запросы ввода / вывода на блоки размером до передачи запросов на уровень кеширования.[нужна цитата]
Когда происходит запрос на запись, соответствующий блок кэша помечается как грязный; грязные блоки кэша лениво записываются на диск в фоновом режиме. Есть несколько параметров для управления обратная запись policy: dirty-threshold, idleness и смежность с другими грязными блоками, которые будут записаны обратно.[нужна цитата]
Ограничения
Есть несколько ограничений, накладываемых реализацией flashcache:[нужна цитата]
- Атомарность
- Запись блоков кэша в настоящее время не является атомарной.
- Поддержка TRIM
- ATA ПОДРЕЗАТЬ команды для оптимизации флеш-памяти пока не поддерживаются.
- Защита от загрязнения кеша
- Процесс можно пометить как не кэшируемый, чтобы его запросы не кэшировались flashcache; однако, если процесс, который пометил себя как некэшируемый, умирает, flashcache не имеет возможности его очистить.
- Выравнивание
- Использование устройства сопоставления приводило к проблемам с производительностью кэширования и отсутствию кеширования записей, размер которых не кратен 4 КиБ. В первую очередь это касается гипервизора Xen. Таким образом, EnhanceIO отошла от интеграции устройства сопоставления устройств, что привело к повышению производительности в неоптимальных случаях использования.[нужна цитата]
- Влияние задержки чтения при чтении
- в режиме обратной записи все операции записи обходят кеш для обеспечения высокой согласованности. Текущая реализация будет получать чтения через устройство SSD, а затем доставлять их фактическому считывателю. Это означает, что ранее некэшированные блоки всегда должны сначала переходить на устройство SSD, что вызывает постоянный ввод-вывод записи. Это не проблема для корпоративных SSD или устройств PCIe высокого уровня, которые использует facebook, но снижает производительность на SSD более низкого уровня.
- Фаза разогрева кэша чтения с обратной записью
- в режиме обратной записи FlashCache не имеет информации для сравнения возраста кешированных страниц с данными на диске. (1) Поскольку устройство могло быть смонтировано вне FlashCache (2) Поскольку в этом режиме записи не отслеживаются. Это приводит к пустому кешу после каждой активации тома (т. Е. Перезагрузки). Производительность будет снижаться до тех пор, пока все горячие области не будут кэшированы.
Смотрите также
- bcache
- dm-cache
- Программное обеспечение для ускорения кеширования (Продукт Intel)