Cloudflare reduce 100 TB de memoria en la caché DNS de 1.1.1.1

Fuentes: How we saved 100 terabytes of memory by optimizing 1.1.1.1's DNS cache

Cloudflare ha detallado en un artículo de ingeniería cómo cinco cambios sucesivos en la estructura de datos de la caché de Big Pineapple —la plataforma que da soporte a 1.1.1.1, Gateway DNS, DNS Firewall y AS112— redujeron en más de un 50 % el tamaño por entrada de caché. Con más de 250.000 millones de entradas almacenadas en cualquier momento, cada byte no optimizado costaba más de 250 GB de memoria en toda la flota; en conjunto, las mejoras liberaron unos 100 TB de RAM, equivalentes a 130 servidores Gen 13. Además del ahorro, la caché ganó velocidad: el rendimiento de inserciones subió un 43 % y la latencia de consulta bajó un 19 %, gracias a menos asignaciones de memoria y mejor localidad de referencia.

El primer cambio sustituyó los campos Vec y String, que reservan capacidad futura, por Box<[T]> y Box, ahorrando 64 bytes por entrada y eliminando espacio desaprovechado en el heap, lo que supuso más de 15 TB. El segundo unificó las listas de respuestas, autoridad y registros adicionales en una sola lista con offsets de 2 bytes, eliminando dos punteros y ahorrando 28 bytes por entrada; el empaquetado de booleanos en bitflags redujo aún más el tamaño por el ajuste de alineación. El tercero eliminó el nombre del propietario del registro cuando coincide con el dominio consultado, aprovechando la compresión de nombres del formato DNS descrito en RFC 1035.

Las mediciones se realizaron con un asignador personalizado sobre Rust System allocator y se validaron con memoria residente en producción. El artículo es una guía útil para ingenieros que trabajen con cachés de alto rendimiento en Rust y para entender las consecuencias de las decisiones de diseño en sistemas a escala de internet.