100 терабайт ценной оперативной памяти зря тратилось на кэш DNS Cloudflare
После оптимизаций компания просто повысит число записей, хранящихся в кэше.
CDN-сервис Cloudflare высвободил для своих серверов порядка 100 терабайт оперативной памяти. Это оказалось не очень сложно: компания просто перенастроила и оптимизировала кэш публичного DNS 1.1.1.1.
В результате всех оптимизаций размер одной кэшированной записи удалось уменьшить с 953 до 420 байт. В кэше хранится свыше 250 миллиардов записей, так что общая экономия получилась изрядной.
Снизить объем использования памяти помогла замена динамических контейнеров Vec и String на структуры фиксированного размера — только эта оптимизация позволила сберечь свыше 15 терабайт памяти.
Заодно разработчики объединили несколько списков DNS-записей в единый буфер, перестали сохранять повторяющиеся доменные имена и изменили способ хранения DNS-записей: раньше короткая A-запись в 4 байта могла занимать 144 байта памяти.
Помимо снижения использования памяти, оптимизации ускорили работу кэша. Пропускная способность при добавлении записей выросла с 625000 до 893000 операций в секунду, а задержка поиска снизилась с 828 до 670 наносекунд.
К сожалению, Cloudflare не собирается разобрать ставшие ненужными сервера и пожертвовать память игрокам — компания просто будет хранить больше записей в кэше.

