Cloudflare reduziu em 56% o consumo por entrada do cache DNS do 1.1.1.1 e liberou cerca de 100 TB otimização de memória do cache DNS do 1.1.1.1 na frota, com ganhos de 43% na inserção e 19% na latência.
Cache DNS do 1.1.1.1 teve consumo por entrada reduzido de 953 para 420 bytes (−56%)
Otimização liberou cerca de 100 TB de memória de trabalho na frota da Cloudflare
Leia também
AWS, Azure ou Google Cloud: como escolher
Taxa de inserção subiu 43% e latência de consulta caiu 19%
Cinco mudanças sucessivas em Rust, incluindo Box, bitflags e buffer contíguo em formato DNS wire
Memória residente p99 por instância caiu de 9,3 GB para 5,3 GB
O que a Cloudflare mudou no cache DNS do 1.1.1.1
Cinco mudanças sucessivas em Rust reescreveram a representação em memória do cache do Big Pineapple, plataforma de DNS da Cloudflare que mantém mais de 250 bilhões de entradas ativas.
A troca de Vec e String por Box e Box economizou 64 bytes por entrada e mais de 15 TB na frota; bitflags, offsets compactos e buffer contíguo em formato DNS wire completaram o desenho final.
Números em produção e comparação com outros resolvedores
Implantada entre 18 de maio e, a otimização derrubou a memória residente p99 por instância de 9,3 GB para 5,3 GB e a p90 de 6,5 GB para 3,8 GB.
Diferente de Unbound e PowerDNS Recursor, que organizam múltiplos tipos de cache, o trabalho da Cloudflare atacou o overhead de representação dentro de cada entrada individual.
O que desenvolvedores podem aproveitar
Princípios como fatias boxed, bitflags e eliminação de alocações por registro são aplicáveis a qualquer serviço com milhões de objetos em memória.
| Métrica | Antes | Depois |
|---|---|---|
| Consumo por entrada | 953 bytes | 420 bytes |
| Alocações por entrada | 1,1 KB | 461 bytes |
| Memória residente p99 | 9,3 GB | 5,3 GB |
| Memória residente p90 | 6,5 GB | 3,8 GB |
| Taxa de inserção | baseline | +43% |
| Latência de consulta | baseline | −19% |
Arraste para o lado para ver toda a tabela.
A ressalva da comunidade: em volumes menores, a indireção extra pode prejudicar a localidade de cache. Benchmarks com o padrão real de acesso são obrigatórios.
Leia também:
Fonte: Infoq