Cloudflare je optimizacijom sopstvenog DNS keš sistema oslobodio oko 100 TB RAM-a u globalnoj mreži koja stoji iza popularnog resolvera 1.1.1.1. Nije kupljen novi hardver ni zamenjeni memorijski moduli, javlja TechSpot. Inženjer sistema Sebastijan Njutbum (Sebastiaan Neuteboom) opisao je u tehničkom blogu pet izmena u Rust kodu koje su prosečan keš unos smanjile sa 953 na 420 bajtova.
Optimizacija se tiče platforme Big Pineapple, koja pokreće 1.1.1.1 resolver, DNS Firewall i niz drugih DNS usluga. Rezultat je posebno zanimljiv jer pokazuje koliko se postiže čisto softverskim putem. Serverska memorija postaje sve skuplja, a svaki pružalac usluga traži više od postojeće infrastrukture.
Ukratko: Softverska optimizacija DNS keša donosi uštede kao 130 novih servera
- Izvor informacija: Detalje je u tehničkom blogu Cloudflare objavio inženjer sistema Sebastijan Njutbum, a vest je preneo portal TechSpot.
- Ključni rezultat: Pet izmena u Rust kodu smanjilo je tipičan keš unos sa 953 na 420 bajtova, a ukupna ušteda iznosi oko 100 TB RAM-a u celoj mreži.
- Ubrzanje sistema: Broj ubačenih unosa u sekundi porastao je sa 625.000 na 893.000, dok je vreme pretrage skraćeno sa 828 na 670 nanosekundi.
- Tržišni kontekst: Oslobođeni kapacitet Cloudflare usmerava u povećanje keša, što bi trebalo da poveća stopu pogodaka i smanji saobraćaj ka autoritativnim DNS serverima.
Pet izmena u Rust kodu izbacuje višak memorije
DNS keš platforme Big Pineapple čuvao je mnogo više podataka nego što mu je stvarno trebalo. Jedna od najvećih izmena odnosila se na Rustove tipove Vec i String. Oni uz sadržaj čuvaju i metapodatke o kapacitetu, jer su napravljeni za strukture koje mogu da rastu. DNS zapisi ne menjaju veličinu nakon ulaska u keš, pa su inženjeri te strukture zamenili blokovima fiksne veličine. Samo ovaj potez oduzeo je više od 15 TB RAM-a iz mreže.
Sledeći korak bio je promena rasporeda DNS odgovora u memoriji. Ranije su se za svaki odgovor čuvale tri odvojene liste zapisa. Novo rešenje sve zapise smešta u jedan međuspremnik i identifikuje ih dvobajnim pokazivačima. Platforma je takođe prestala da čuva vlasničko ime zapisa kada ono ponavlja domenu iz upita; to ime se rekonstruiše tek pri isporuci odgovora.
Posebno je uočljiva izmena u čuvanju sirovih podataka zapisa. U starom sistemu, IPv4 A zapis od svega četiri bajta zauzimao je isti prostor od 144 bajta kao i najveći tip DNS zapisa koji Cloudflare keširа. Prelaskom na format promenljive dužine uz dužinski prefiks, svaki zapis zauzima prostor srazmeran stvarnoj veličini. Rezervacija za najgori mogući slučaj odlazi u istoriju.
Šta znači ušteda od 100 TB u praksi
Big Pineapple u svakom trenutku drži više od 250 milijardi DNS unosa. Pri toj razmeri, jedan nepotreban bajt po unosu odgovara gubitku od više od 250 GB u celoj mreži. Cloudflare to eksplicitno navodi kao meru koliko preciznost u dizajnu podataka može biti skupa ako se zanemari. Oslobođenih 100 TB odgovara memorijskom kapacitetu 130 servera 13. generacije, od kojih svaki nosi 768 GB DDR5-6400 memorije.
Sistem je i brži. Broj unosa koji se ubacuju u sekundi porastao je za oko 43 odsto. Latencija pretrage skraćena je za gotovo petinu. Tokom postepenog uvođenja izmena od sredine maja do početka jula, potrošnja memorije po instanci u 99. percentilu pala je sa 9,3 GB na 5,3 GB. Oslobođenu memoriju Cloudflare usmerava u proširenje keša, čime raste procenat upita na koje mreža odgovara lokalno, bez pitanja autoritativnih servera.
Ovo nije prvi put. Prošle godine kompanija je prepisala FL2 sloj za obradu zahteva u Rust, sa istim ciljem: memorijska efikasnost bez novog hardvera. Oba projekta deo su iste strategije kojom Cloudflare povećava kapacitete i prihode bez proporcionalne kupovine novih mašina.
Skuplja infrastruktura vraća inženjere kodu
Cloudflareov poduhvat pokazuje pomak koji se sve češće vidi kod velikih pružalaca internet usluga. Umesto da posegnu za novim hardverom kada kapacitet postane ograničenje, inženjeri se vraćaju kodu i traže gde se memorija troši bez razloga. Kada je hardver bio jeftiniji, takav rad je prolazio nezapaženo. Danas, kada serverska memorija poskupljuje i obim podataka raste neprekidno, svaki bajt koji izlazi iz strukture podataka nosi merljivu finansijsku vrednost.
Rust tu nije slučajan izbor. Jezik daje preciznu kontrolu nad raspoređivanjem podataka u memoriji, bez automatskog upravljanja koje uvodi nepredvidive troškove. Cloudflare je tu osobinu iskoristio da zameni opštije Rustove apstrakcije kompaktnijim strukturama prilagođenim isključivo DNS kešu. Manje autoritativnih upita napušta mrežu. Korisnici dobijaju odgovor brže.
Za industriju u celini, ovo je dokaz da optimizacija na nivou struktura podataka može zameniti investiciju u hardver vrednu desetine miliona dolara, a da u rek-ormaru ne stigne ni jedan novi kabl. Drugi pružaoci usluga koji razmatraju rast DNS infrastrukture bez srazmernog rasta troškova sada imaju konkretan, izmerljiv primer pred sobom.
Česta pitanja
Šta je Cloudflare 1.1.1.1 i zašto je ova optimizacija važna?
1.1.1.1 je besplatni javni DNS resolver koji Cloudflare nudi svim korisnicima interneta radi bržeg i privatnijeg razrešavanja domenskih adresa. Optimizacija znači da isti resolver sada radi brže i može da keširа više zapisa uz isti hardver.
Da li ova promena utiče na korisnike koji koriste 1.1.1.1 DNS?
Krajnji korisnici ne moraju ništa da menjaju u podešavanjima. Poboljšanje je automatsko: viša stopa pogodaka u kešu i niža latencija znače nešto brže odgovore pri razrešavanju domenskih adresa.
Zašto je Cloudflare odabrao Rust za ovu optimizaciju?
Rust omogućava preciznu kontrolu nad raspoređivanjem podataka u memoriji, pa su inženjeri mogli da zamene opšte Rustove tipove kompaktnijim strukturama fiksne veličine prilagođenim isključivo potrebama DNS keša.





