Cloudflare освободила 100 ТБ памяти в DNS-кеше 1.1.1.1 без новых серверов

Cloudflare заявила, что с помощью пяти изменений в хранении DNS-кэша для 1.1.1.1 и связанных сервисов освободила примерно 100 ТБ памяти. Речь идёт не о замене серверов, а о переработке того, как Big Pineapple держит записи в памяти.
В Cloudflare отмечают, что платформа хранит более 250 млрд DNS-записей кэша одновременно. При таком масштабе даже один лишний байт на запись превращается в сотни гигабайт лишней памяти по всему парку.
Оптимизация DNS-кэша 1.1.1.1
Cloudflare описывает пять оптимизаций, которые уменьшили размер одной записи кэша больше чем наполовину. На стороне процесса это дало ещё и ускорение: вставка записей выросла на 43%, а задержка поиска снизилась на 19%.
- Vec и String заменили на Box<[T]> и Box<str>.
- Три списка записей объединили в один буфер с двумя смещениями.
- Поле owner убрали там, где оно совпадает с запрошенным доменом.
- Крупные варианты DNS-записей вынесли в отдельные heap-выделения.
- Сами данные записей стали хранить как raw bytes с длиной в начале.
Первый шаг сократил расход памяти сразу в нескольких местах. Vec и String хранят не только данные, но и запас по ёмкости, который в DNS-кэше не нужен: после записи объект уже не растёт. Замена на fixed boxed-срезы убрала лишние поля и сократила перерасход heap-памяти.
Дальше инженеры убрали дублирование в структуре ответа. Вместо отдельных списков для answer, authority и additional записи теперь лежат в одном буфере, а границы частей задают смещения. Параллельно Cloudflare отказалась хранить owner у тех записей, где он и так совпадает с именем запроса.
Самым заметным узким местом оказалась укладка DNS-данных в Rust-энумы. Самая крупная разновидность записи в кэше, NAPTR, раздувала размер всего enum до 144 байт, хотя A-записи занимают всего 4 байта, а AAAA — 16 байт. Cloudflare вынесла крупные варианты на heap, а затем стала хранить данные записей в виде raw-буфера с длиной перед каждым элементом.
Результат в цифрах
По итогам внедрения размер типичной записи кэша снизился с 953 байт до 420 байт. Это сокращение на 56%, а число выделений на запись упало с 1,1 КБ до 461 байта.
В производстве эффект оказался заметен на уровне всего парка. Во время раскатки, которая началась 18 мая 2026 года и завершилась 6 июля 2026 года, p99-потребление памяти на инстанс уменьшилось с 9,3 ГБ до 5,3 ГБ. На p90 показатель снизился с 6,5 ГБ до 3,8 ГБ.
Cloudflare связывает это не только с экономией памяти, но и с работой самого кэша. Более компактное хранение дало лучшую локальность данных и меньше лишних аллокаций, поэтому вставка записей ускорилась до 893 000 записей в секунду, а задержка поиска снизилась до 670 наносекунд.
Компания отдельно пишет, что высвобожденные 100 ТБ памяти эквивалентны объёму RAM в 130 серверах Gen 13. Этот запас планируют направить на увеличение ёмкости DNS-кэшей без роста общего потребления памяти.



