Cloudflare освобождает 100TB RAM за счет сжатия записей DNS-кэша 1.1.1.1

Cloudflare Dns Rust оптимизация памяти кэш серверы tomshardware.com

Cloudflare освободил 100 ТБ RAM, переписав DNS-кэш на Rust: размер записи уменьшен вдвое, вставка ускорена на 43%, задержка снижена на 19%. Узнайте, как пять оптимизаций сэкономили память без замены модулей.

Cloudflare сообщает, что освободил примерно 100 ТБ оперативной памяти по всему своему глобальному парку серверов без переконфигурации физических модулей RAM, и сделал это, переработав способ размещения каждой записи DNS-кэша в памяти. В техническом блоге системный инженер Себастиан Нойтебум подробно описал пять изменений на уровне Rust в платформе Big Pineapple, лежащей в основе резолвера 1.1.1.1, которые сократили размер каждой кэшированной записи с 953 байт до 420 байт и одновременно ускорили кэш: пропускная способность вставки выросла на 43%, а задержка поиска снизилась на 19%. Освобождённая память эквивалентна суммарному объёму DDR5 в 130 серверах Cloudflare Gen 13 с 768 ГБ, и это достигнуто на фоне цен на серверную DDR5, которые могут удвоиться год к году.
Всего один лишний байт на запись обходится Cloudflare более чем в 250 ГБ памяти парка, что является следствием того, что Big Pineapple хранит «более 250 миллиардов кэшированных DNS-записей в любой момент времени». Первое из пяти изменений — замена расширяемых контейнеров Vec и String в Rust на фиксированные boxed slices — само по себе сэкономило более 15 ТБ за счёт удаления полей ёмкости, которые данные после кэширования никогда не используют.
Последующие изменения свели три списка записей в каждом DNS-ответе в один буфер, индексируемый 2-байтовыми смещениями, и отказались от хранения имён владельцев, дублирующих запрошенный домен, восстанавливая их при чтении. Последнее изменение хранит данные записей как байты в сыром wire-формате с префиксом длины, положив конец ситуации, когда 4-байтовая A-запись занимала те же 144 байта, что и самый крупный тип записи, кэшируемый Cloudflare, — редко встречающийся NAPTR.
Упаковка данных записей непрерывно также улучшила локальность кэша CPU, так что теперь большинство типов записей копируются напрямую из сохранённого буфера в исходящие ответы вместо повторной сериализации поля за полем.
Согласно бенчмаркам Cloudflare в техническом блоге, пропускная способность вставки теперь составляет 893 000 записей в секунду по сравнению с 625 000, а задержка поиска снизилась с 828 до 670 наносекунд. За время развёртывания, которое длилось с середины мая до начала июля, p99 резидентной памяти на экземпляр упал с 9,3 ГБ до 5,3 ГБ.
Серверы Gen 13, которые Cloudflare называет своими самыми мощными на сегодняшний день, несут по 768 ГБ DDR5-6400. Компания остановилась на этой конфигурации ещё в марте, оценив вариант на 1152 ГБ и отклонив его отчасти из-за высоких цен на память.
Эта работа над DNS-кэшем — второй крупный проект по освобождению памяти, завершённый Cloudflare за последний год, после переписывания уровня обработки запросов FL2 на Rust в сентябре прошлого года. Эффективность уже много лет определяет выбор оборудования компании, включая переход на 96-ядерные AMD EPYC 9684X для серверов Gen 12.
Впрочем, ни один байт освобождённой RAM не будет реализован в виде меньших конфигураций памяти; Cloudflare планирует направить её обратно в более крупные DNS-кэши, что повысит процент попаданий и сократит трафик запросов, отправляемый вышестоящим авторитетным серверам.

Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.

В тренде:


Похожие новости: