Cloudflare重新设计了其1.1.1.1解析器所使用的DNS缓存的内存表示,将每个条目的基准空间占用减少56%,并在整个服务器集群中释放约100TB的工作集内存。对DNS平台Big Pineapple的改动使缓存插入吞吐量提高43%,查询延迟降低19%。

在任何时刻,Big Pineapple都存储着超过2500亿个DNS缓存条目。Cloudflare系统工程师Sebastiaan Neuteboom表示,能节省100TB的内存并非每天都能遇到。这项工作对Rust的缓存表示形式连续进行了五次迭代优化:首先将插入后固定不变的数据类型从Vec和String替换为Box,使每个条目节省64字节,整个集群累计节省超过15TB内存;随后将应答、权限及其他记录合并为带紧凑偏移量的列表,将布尔值打包成位标志,并省略与查询域名匹配的所有者名称,转而通过缓存键重建。

最大的挑战在于Rust枚举。Cloudflare最初尝试对较大的枚举变体进行装箱,但独立的内存分配不仅增加开销,还降低了内存局部性。最终设计采用DNS有线格式,将记录数据存储在连续的字节缓冲区中,既消除了枚举和按记录分配的开销,又提高了局部性。常用记录类型可直接复制到响应中,包含域名的记录仍需解析以实现DNS名称压缩。

该方法与其他递归DNS解析器的缓存架构有所不同。Unbound维护独立的消息、RRset、键和负缓存,PowerDNS Recursor使用多种缓存类型,而Cloudflare的工作重点在于减少单个缓存条目的表示和分配开销。该优化已于2026年5月18日至7月6日期间在生产环境中全面部署,p99水平下每实例驻留内存从9.3GB降至5.3GB,p90水平下从6.5GB降至3.8GB。基准测试显示,每个条目内存占用从953字节降至420字节,内存分配从1.1KB降至461字节。Cloudflare计划利用释放出的内存增加缓存容量,而不增加整体内存消耗。