Cloudflare Libera 100TB di RAM Senza Nuovi Server: Scopri Come!

Cinque modifiche al codice Rust riducono le voci tipiche della cache DNS da 953 byte a 420 byte

In breve: Cloudflare ha ridotto del più della metà la memoria utilizzata dalla cache DNS dietro al suo resolver 1.1.1.1, liberando circa 100TB di RAM in tutta la sua rete. La compagnia non ha sostituito l’hardware del server né rimosso moduli di memoria. Invece, gli ingegneri hanno modificato il modo in cui i dati DNS memorizzati nella cache sono gestiti dal software.

Il lavoro di ottimizzazione si è concentrato su Big Pineapple, la piattaforma di caching DNS di Cloudflare dietro al popolare resolver 1.1.1.1, DNS Firewall e diversi altri servizi DNS che offrono. In un post tecnico sul blog, l’ingegnere di sistema Sebastiaan Neuteboom ha descritto cinque modifiche al codice Rust che hanno ridotto una voce tipica della cache da 953 byte a 420 byte.

Le modifiche hanno anche accelerato la cache. Cloudflare ha segnalato che la velocità di inserimento è aumentata da 625.000 a 893.000 voci al secondo, mentre la latenza di ricerca è diminuita da 828 nanosecondi a 670 nanosecondi. Durante il lancio, da metà maggio a inizio luglio, l’uso di memoria p99 per istanza è sceso da 9.3GB a 5.3GB.

Grafico che mostra l'aumento della velocità di inserimento e la riduzione della latenza nella cache DNS
Le ottimizzazioni hanno aumentato la velocità di inserimento da 625.000 a 893.000 voci al secondo.

Cloudflare afferma che Big Pineapple contiene più di 250 miliardi di voci DNS in qualsiasi momento e, a quella scala, anche piccole quantità di memoria sprecata si accumulano rapidamente. La compagnia stima che un solo byte non necessario in ogni voce della cache costi più di 250GB attraverso la sua flotta.

Uno dei cambiamenti più significativi ha coinvolto i tipi Vec e String di Rust. Questi contenitori sono progettati per crescere, quindi memorizzano dati sulla capacità oltre ai dati stessi. Ma i record DNS non hanno bisogno di espandersi dopo essere entrati nella cache. Cloudflare ha sostituito queste strutture con fette di dimensioni fisse, eliminando i metadati che non erano più utili. La compagnia ha affermato che questa sola modifica ha risparmiato oltre 15TB di RAM.

LEGGI  Nvidia e AMD accumulano schede grafiche prima dei dazi di Trump che potrebbero aumentare i prezzi del 40%
Schermata di codice Rust con modifiche di ottimizzazione della memoria su sfondo scuro
Le modifiche ai tipi Vec e String di Rust hanno liberato oltre 15TB di RAM dalla flotta di Cloudflare.

Gli ingegneri hanno anche ripensato al modo in cui le risposte DNS sono memorizzate nella memoria. Big Pineapple precedentemente memorizzava tre liste separate di record per risposta. Il nuovo design colloca i record in un unico buffer e li identifica con offset di due byte.

La cache non conserva più i nomi dei proprietari quando questi semplicemente ripetono il dominio interrogato. Cloudflare ricostruisce questi nomi quando serve la risposta. Inoltre, ora memorizza i dati dei record come byte grezzi con prefisso di lunghezza nel formato wire. Questa modifica affronta una discrepanza nel design precedente. Un record IPv4 A di quattro byte occupava gli stessi 144 byte del tipo di record DNS più grande che Cloudflare memorizza, il record NAPTR relativamente raro. Memorizzare i dati grezzi in un formato di lunghezza variabile riduce questo spreco.

I 100TB di RAM che Cloudflare ha recuperato attraverso la sua flotta equivalgono approssimativamente alla memoria di 130 dei suoi server di generazione 13, ognuno dei quali dispone di 768GB di DDR5-6400. La compagnia aveva considerato una configurazione di 1,152GB per quella generazione di server ma ha rinunciato dopo aver valutato il costo della RAM di capacità superiore.

Con il risparmio di RAM, Cloudflare prevede di allocare la memoria a cache DNS più grandi. Mantenere più record localmente dovrebbe migliorare i tassi di hit della cache e ridurre il traffico che invia ai server DNS autorevoli.

Questo progetto segue un altro importante sforzo di efficienza della memoria completato l’anno scorso, quando Cloudflare ha riscritto il suo strato di gestione delle richieste FL2 in Rust. Probabilmente è un buon modo per utilizzare le risorse e ottenere di più dalla sua infrastruttura esistente mentre la memoria del server diventa più costosa.

LEGGI  Intelligenza Artificiale di OpenAI Sfugge al Controllo: Violati Account su Quattro Servizi

Messaggi simili: