Cloudflare, sunucularındaki fiziksel RAM modüllerini yeniden yapılandırmadan, küresel ağındaki yaklaşık 100TB belleği boşalttığını duyurdu. Bu başarı, DNS önbelleği girdilerinin bellekte nasıl düzenlendiğinin yeniden tasarlanmasıyla elde edildi. Teknolojinin perde arkasını anlatan bir teknik blog yazısında, 1.1.1.1 DNS çözümleyicisinin temelini oluşturan platformda yapılan beş önemli değişiklik sayesinde, önbelleğe alınan her bir DNS girdisinin boyutu 953 bayttan 420 bayta indirildi. Bu optimizasyon aynı zamanda önbelleğin daha da hızlanmasını sağladı; veri ekleme hızı %43 artarken, sorgu yanıt süresi %19 azaldı. Elde edilen bu bellek miktarı, Cloudflare'in 768GB'lık 130 adet Gen 13 sunucusundaki DDR5 belleğine denk geliyor. Bu hamle, özellikle sunucu sınıfı DDR5 bellek fiyatlarının yıldan yıla ikiye katlanma eğiliminde olduğu bir dönemde gerçekleştirildi.
Her bir DNS girdisindeki tek bir baytlık israf bile, Cloudflare için 250GB'dan fazla bellek kaybına neden oluyor. Bunun nedeni, platformun herhangi bir anda "250 milyardan fazla önbelleğe alınmış DNS girdisini" barındırması. Yapılan beş değişiklikten ilki, Rust'ın dinamik olarak büyüyebilen Vec ve String kapsayıcıları yerine sabit boyutlu kutulanmış dilimlerin kullanılması oldu. Bu değişiklik tek başına, veri önbelleğe alındıktan sonra asla kullanılmayan kapasite alanlarını ortadan kaldırarak 15TB'dan fazla bellek tasarrufu sağladı.
Diğer optimizasyonlar arasında, her DNS yanıtındaki üç kayıt listesinin iki baytlık ofsetlerle indekslenen tek bir arabellekte birleştirilmesi ve sorgulanan alan adıyla tekrar eden alan adlarının kaldırılıp okuma zamanında yeniden oluşturulması yer alıyor. Son değişiklik ise kayıt verilerinin, uzunluk ön ekli ham bayt dizileri olarak saklanmasını içeriyor. Bu, daha önce 4 baytlık bir A kaydının, Cloudflare'in önbelleğe aldığı en büyük kayıt türü olan ve nadiren karşılaşılan NAPTR ile aynı 144 baytlık alanı kaplaması gibi durumları sonlandırdı.
Kayıt verilerinin daha sıkı bir şekilde paketlenmesi, CPU önbelleği yerelliğini de iyileştirdi. Bu sayede çoğu kayıt türü, alan alan yeniden seri hale getirilmek yerine doğrudan depolama arabelleğinden giden yanıtlara kopyalanabiliyor.
Cloudflare'in teknik blogunda paylaştığı karşılaştırmalı test sonuçlarına göre, veri ekleme hızı saniyede 625.000'den 893.000 girdiye yükselirken, sorgu yanıt süresi 828 nanosaniyeden 670 nanosaniyeye düştü. Mayıs ortasından temmuz başına kadar süren dağıtım süreci boyunca, örnek başına %99'luk bellek kullanımı 9.3GB'tan 5.3GB'a geriledi.
Cloudflare'in en güçlü sunucuları olarak tanımladığı Gen 13 modelleri, her biri 768GB DDR5-6400 belleğe sahip. Şirket, Mart ayında 1.152GB'lık bir seçeneğin fiyatlandırmasını yaptıktan ve yüksek bellek fiyatları nedeniyle bu seçeneği reddettikten sonra bu konfigürasyona karar vermişti.
Bu DNS önbelleği optimizasyonu, Cloudflare'in geçtiğimiz yıl tamamladığı ikinci büyük bellek geri kazanım projesi oldu. Bir önceki proje, geçtiğimiz eylül ayında gerçekleşen istek işleme katmanının FL2 ile Rust'ta yeniden yazılmasıydı. Verimlilik, şirketin donanım seçimlerinde yıllardır önemli bir rol oynuyor. Buna, Gen 12 sunucuları için AMD'nin 96 çekirdekli EPYC 9684X işlemcilere geçişi de dahil.
Kurtarılan belleğin daha küçük bellek konfigürasyonları olarak kullanılmayacağı belirtildi. Cloudflare, bu belleği daha büyük DNS önbelleklerine aktarmayı planlıyor. Bu sayede önbellek isabet oranları artacak ve yetkili sunuculara gönderilen sorgu trafiği azalacak.