DNS önbelleğinde beş optimizasyon, 100 terabayt bellek kazandırdı
Cloudflare, 1.1.1.1'in önbellek yapısında Rust düzeyinde yaptığı değişikliklerle kayıt başına belleği yüzde 56 düşürdü.
Büyük ölçekte çalışan sistemlerde küçük iyileştirmeler büyük sonuçlar doğuruyor. Cloudflare'in 1.1.1.1 ve diğer DNS hizmetlerinin arkasındaki platformu Big Pineapple, herhangi bir anda 250 milyardan fazla DNS önbellek girdisi tutuyor. Bu ölçekte girdi başına tek bir baytı boşa harcamak, filo genelinde 250 gigabayttan fazla belleğe mal oluyor.
Önbellek girdilerinin bellekte nasıl saklandığına yapılan beş ardışık değişiklik, girdi başına ayak izini yüzde 50'nin üzerinde azaltmış. Filo genelinde bu, yaklaşık 100 terabayt belleğin serbest kalması demek — şirketin 13. nesil sunucularından 130 tanesinin toplam RAM'ine denk bir miktar.
Kazanım yalnızca bellekte kalmıyor. Ekleme verimi yüzde 43 artmış, arama gecikmesi yüzde 19 azalmış. Şirket bunu, daha az bellek ayırma işlemi ve daha iyi bellek yerelliğiyle açıklıyor — yani hızdan ödün vererek yer kazanılmamış, ikisi birden iyileşmiş.
Optimizasyonların mantığı somut bir örnekle anlatılıyor. Rust'ta büyüyebilir bir dizi üç alan tutuyor: veriye işaretçi, mevcut uzunluk ve toplam kapasite. Ancak bir DNS yanıtı önbelleğe alındıktan sonra bir daha değiştirilmiyor. Kapasite alanı hiçbir işe yaramıyor ama girdi başına 8 bayt yer kaplıyor; üstelik fazladan ayrılan yığın alanı da boşa gidiyor — sekiz öğelik kapasitesi olup beş öğe tutan bir dizi üç boş yuva bırakıyor. Oluşturulduktan sonra büyüyemeyen bir veri yapısına geçmek her iki sorunu da ortadan kaldırıyor.
Ölçümler üretim trafiğine yakın bir dağılımla yapılmış: kayıtların yüzde 56'sı A, yüzde 25'i AAAA ve yüzde 19'u TXT tipinde. Şirket bellek kullanımını, Rust'ın sistem ayırıcısını saran özel bir ayırıcıyla izlemiş ve tasarrufun performansa mal olmadığından emin olmak için ekleme verimi ile arama gecikmesini de ölçmüş.
Optimizasyonun özellikle etkili olduğu yerler de belirtiliyor: istemcinin ağına göre farklı yanıt döndürülen EDNS Client Subnet kullanımının yoğun olduğu veri merkezlerinde aynı sorgunun birden çok sürümü önbelleğe alındığı için hem girdi sayısı hem girdi başına bellek artıyor.
Comments (0)
No comments yet.
Comments are moderated before publishing.