Cloudflare освободила 100 ТБ оперативной памяти простой оптимизацией кода
Cloudflare освободила около 100 ТБ оперативной памяти на своей глобальной серверной инфраструктуре, не меняя физическое оборудование. Инженеры компании переработали структуру DNS-кэша платформы Big Pineapple, которая лежит в основе публичного DNS-сервиса 1.1.1.1.
«После пяти изменений в коде на Rust размер одной кэшированной DNS-записи удалось сократить с 953 до 420 байт — примерно на 56%», — сообщает IXBT News. На масштабе Cloudflare это дает огромную экономию: в Big Pineapple одновременно хранится более 250 млрд DNS-записей.
Более 15 ТБ удалось высвободить после замены динамических контейнеров Rust Vec и String на структуры фиксированного размера. После попадания данных в кэш увеличивать их емкость уже не требовалось, поэтому дополнительная память фактически расходовалась впустую.
Инженеры также объединили три списка DNS-записей в единый буфер с двухбайтовыми смещениями, отказались от хранения повторяющихся доменных имен. Сами данные теперь хранятся в компактном сетевом формате с указанием длины. Раньше, например, небольшая четырехбайтовая DNS-запись типа A могла занимать в памяти те же 144 байта, что и значительно более крупные записи.
Оптимизация не только освободила память, но и ускорила работу сервиса. Скорость добавления записей в кэш выросла на 43%. Задержка поиска снизилась с 828 до 670 наносекунд.
Cloudflare планирует использовать освободившуюся память для увеличения DNS-кэшей. Благодаря этому больше запросов можно будет обслуживать непосредственно из кэша, реже обращаясь к авторитетным DNS-серверам. Это одновременно снизит сетевую нагрузку и ускорит обработку DNS-запросов.
Подписывайтесь на наш Telegram-канал, чтобы быть в курсе всех новостей и событий Рунета.