Наука и технологии

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

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-кэшей без роста общего потребления памяти.

Источники: Cloudflare, Techspot
Марта Баринова
Редактор новостного отдела, специализирующийся на аналитике программного обеспечения, стриминговых сервисов и изменениях в политике глобальных технологических платформ. В своих материалах Марта подробно освещает обновления Windows, функциональные изменения в Spotify и Google, а также исследует вопросы антимонопольного регулирования магазинов приложений. Автор более 140 публикаций, помогающих пользователям ориентироваться в быстро меняющемся ландшафте цифровых сервисов.

    Оставить комментарий