Флешкэш
![]() | Эту статью необходимо обновить . ( декабрь 2013 г. ) |
Flashcache — это компонент дискового кэша для ядра Linux , первоначально разработанный Facebook с апреля 2010 года и выпущенный с открытым исходным кодом в 2011 году. С января 2013 года существует форк Flashcache под названием EnhanceIO , разработанный sTec, Inc. [1] С 2015 года эта вилка перестала поддерживаться и была снова разветвлена и поддерживается отдельными лицами. [2]
Flashcache работает с использованием флэш-памяти , USB-накопителя , SD-карты , CompactFlash или любого другого портативного флэш-накопителя в качестве постоянного кэша с обратной записью. Внутренний SSD также можно использовать для повышения производительности. [3]
Обзор
[ редактировать ]Использование флэш-памяти ( устройств памяти NAND ) для кэширования позволяет ядру Linux обслуживать произвольный дисковый ввод-вывод с большей производительностью, чем без кеша. Такое кэширование применяется ко всему содержимому диска, а не только к файлу подкачки или системным двоичным файлам. Устройства на базе флэш-памяти обычно работают на порядок быстрее, чем вращающиеся жесткие диски при произвольном вводе-выводе, но с меньшими преимуществами или даже медленнее при последовательном чтении/записи. По умолчанию flashcache кэширует все операции ввода-вывода полного размера блока, но его можно настроить для кэширования только случайных операций ввода-вывода, игнорируя последовательные операции ввода-вывода. [4]
Подобная технология существует в Microsoft Windows , например ReadyBoost, начиная с Windows Vista .
Выполнение
[ редактировать ]Flashcache построен на основе устройства сопоставления устройств ядра Linux . Структура данных кэша представляет собой наборно-ассоциативную хеш-таблицу , в которой кэш разделен на несколько наборов (корзин) фиксированного размера с использованием линейного зондирования внутри набора для поиска блоков. Уровень сопоставителя устройств разбивает все запросы ввода-вывода на блоки размером с блок перед передачей запросов на уровень кэша. [ нужна ссылка ]
Когда происходит запрос на запись, соответствующий блок кэша помечается как «грязный»; «грязные» блоки кэша лениво записываются на диск в фоновом режиме. Есть несколько параметров для управления политикой обратной записи : грязный порог, бездействие и смежность с другими грязными блоками, которые собираются записать обратно. [ нужна ссылка ]
Ограничения
[ редактировать ]Есть несколько ограничений, налагаемых реализацией flashcache: [ нужна ссылка ]
- атомарность
- Запись блоков кэша в настоящее время не является атомарной.
- Поддержка TRIM
- Команда ATA TRIM для оптимизации флэш-памяти пока не поддерживается.
- Защита от загрязнения кэша
- Процесс можно пометить как некэшируемый, чтобы предотвратить кэширование его запросов в flashcache; однако, если процесс, пометивший себя как некэшируемый, умирает, flashcache не сможет его очистить.
- Выравнивание
- Использование устройства сопоставления устройств приводило к проблемам с производительностью кэширования и отсутствию кэширования записей, размер которых не кратен 4 КиБ. В первую очередь это касается гипервизора Xen. Таким образом, EnhanceIO отошел от интеграции устройства сопоставления устройств, что обеспечивает более высокую производительность в неоптимальных случаях использования. [ нужна ссылка ]
- Влияние задержки чтения при записи
- в режиме обходной записи все записи обходят кэш для обеспечения высокой согласованности. Текущая реализация будет получать данные чтения через устройство SSD, а затем доставлять их реальному считывателю. Это означает, что ранее некэшированные блоки всегда должны сначала поступать на SSD-устройство, что приводит к постоянному вводу-выводу при записи. Это не проблема для корпоративных твердотельных накопителей или устройств PCIe высокого класса, как это использует Facebook, но снижает производительность на более дешевых твердотельных накопителях.
- Фаза прогрева кэша чтения с обходом записи
- в режиме обходной записи FlashCache не имеет информации для сравнения возраста кэшированных страниц с страницами на диске. (1) Поскольку устройство могло быть смонтировано вне FlashCache (2) Поскольку в этом режиме записи не отслеживаются. Это приводит к пустому кэшу после каждой многопользовательской активации (т. е. перезагрузки). Производительность будет снижаться до тех пор, пока все «горячие» области не будут кэшированы.
См. также
[ редактировать ]- bcache
- dm-кэш
- Программное обеспечение для ускорения кэша (продукт Intel)
Ссылки
[ редактировать ]- ^ EnhanceIO: новое кэширование твердотельных накопителей для Linux
- ^ EnhanceIO с открытым исходным кодом для Linux
- ^ «Флэш-кэш | Документация NetApp» . docs.netapp.com . Проверено 10 октября 2022 г.
- ^ Мохан Шринивасан. «Flashcache: кэш блоков обратной записи для Linux» . Гитхаб .