HeadlinesBriefing HeadlinesBriefing.com

Оптимизация DNS-кэша Cloudflare: 100 ТБ

Hacker News •
×

DNS-кэш Cloudflare хранит более 25 миллиардов записей, и каждый потраченный впустую байт обходится в 250 ГБ по всей сети. Внеся пять последовательных изменений в способ хранения записей в памяти, они сократили занимаемое пространство на запись более чем на 50%, освободив примерно 100 терабайт оперативной памяти—эквивалент 130 серверов Gen 13. Оптимизации также улучшили производительность: пропускная способность вставки выросла на 43%, а задержка поиска снизилась на 19%, доказывая, что уменьшение использования памяти может ускорить операции.

Ключевые изменения включали замену типов Vec и String на Box<[T]> и Box<str>, что устранило ненужные поля ёмкости и избыточное выделение кучи. Каждая запись кэша изначально использовала 8 полей Vec/String, каждое с 24 байтами накладных расходов; переход на срезы сэкономил 64 байта на запись. Это было измерено с помощью бенчмарков с пользовательскими аллокаторами и подтверждено в производстве, где экономия памяти была значительной без ущерба для скорости.

Статья подробно описывает технический процесс: от бенчмаркинга с репрезентативным трафиком (56% записей A, 25% AAAA, 19% TXT) до поэтапного развёртывания в центрах обработки данных. Подчёркивается, что небольшая экономия на запись массово накапливается в масштабе, и тщательное профилирование может привести к выигрышу как в памяти, так и в производительности.

Ключевые сущности: Компании: Cloudflare

Часто задаваемые вопросы: Как Cloudflare сократила использование памяти DNS-кэша на 100 ТБ?

Cloudflare заменила поля Vec и String в записях кэша на Box<[T]> и Box<str>, устранив накладные расходы на ёмкость и потери кучи, сэкономив 64 байта на запись, что в сумме составляет ~100 ТБ на 25 миллиардах записей.

Источник: Hacker News · Сводку подготовил HeadlinesBriefing