Faster Index I/O with NVMe SSDs
Поисковый индекс Marginalia переписан, чтобы лучше использовать NVMe-накопители.
Основные изменения:
- Объём: после ослабления фильтров и добавления рекламного детектора база выросла с 350 до 800 млн документов; ожидается дальнейший рост при добавлении новых языков.
- Структура: обратный индекс остался «картой терм → список (документ, позиции)», но B-дерево теперь читается в режиме
O_DIRECT, минуя кэш страниц. - Чтение:
- Буферизованные чтения неэффективны при случайном доступе к файлам, превышающим RAM.
- Прямые чтения требуют выравнивания по 512/4096 Б, но дают стабильную задержку и не копируют данные лишний раз.
- В Linux появляется
RWF_DONTCACHE, но поддержка пока неполная.
Первая оптимизация — переписать B-дерево под O_DIRECT; дальнейшие шаги ещё описываются.