Cloudflare намали с над 50% от паметта, използвана от DNS кеша на своя резолвер 1.1.1.1, като по този начин освободи около 100 TB RAM в цялата си мрежа. Компанията не подмени сървърния хардуер, нито премахна модули памет. Вместо това инженерите промениха начина, по който кешираните DNS данни се съхраняват в софтуера.
Оптимизационната работа бе фокусирана върху Big Pineapple, платформата за DNS кеширане на Cloudflare, която стои зад популярния резолвер 1.1.1.1, DNS Firewall и няколко други DNS услуги, които компанията предлага. В техническата публикация в своя блог системният инженер Себастиан Нютебум описа подробно петте промени, които са намалили типичния размер на кеш-записа от 953 байта на едва 420 байта.
Промените също така ускориха кеша. Cloudflare съобщава, че пропускателната способност при въвеждане се е повишила от 625 000 на 893 000 записа в секунда, докато същевременно латентността при търсенето е спаднала от 828 ns на 670 ns. По време на внедряването, от средата на месец май до началото на юли, използването на памет от всеки инстанс (p99) е спаднало от 9,3 GB на 5,3 GB.
Cloudflare посочва, че Big Pineapple съхранява повече от 250 милиарда DNS записи във всеки един момент, а при такъв мащаб дори малките количества изгубена памет бързо се натрупват. Компанията пресметна, че един-единствен ненужен байт във всеки запис в кеша излиза повече от 250 GB за цялата нейна инфраструктура.
Една от най-големите промени засегна типовете Vec и String в програмния език Rust. Тези контейнери са проектирани да се разширяват, затова съхраняват данните за капацитета в допълнение към самите данни. Но DNS записите не се нуждаят от разширяване, след като влязат в кеша. Cloudflare замени тези структури с boxed slices с фиксиран размер, премахвайки метаданните, които вече не са полезни. Компанията заяви, че само тази промяна е спестила над 15 TB RAM.
Инженерите са преосмислили и начина, по който DNS отговорите се подреждат в паметта. Big Pineapple съхраняваше по три отделни списъка със записи за всеки отговор. Новият дизайн поставя записите в един общ буфер и ги идентифицира с двубайтови офсети.
Кешът вече не запазва имената на притежателите, когато те просто повтарят запитвания домейн. Cloudflare възстановява тези имена, когато изпраща отговора. Сега системата също така съхранява данните от записите като сурови байтове във формат wire, с префикс за дължината. Тази промяна отстранява несъответствието в предишния дизайн. Четирибайтовият IPv4 A запис заемаше същите 144 байта, колкото и най-големият тип DNS запис, който Cloudflare съхранява в кеша, който е относително рядко срещаният NAPTR запис. Съхранението на суровите данни във формат с променлива дължина намалява това разхищение.
100-те TB RAM, които Cloudflare е освободила в цялата си инфраструктура, са приблизително равни на паметта в 130 от нейните сървъри от 13-то поколение, всеки от които разполага с по 768 GB DDR5-6400 оперативна памет. Компанията беше обмисляла конфигурация от 1 152 GB за това поколение сървъри, но се отказа от нея, след като прецени разходите за RAM с по-голям капацитет.
Със спестената RAM памет Cloudflare възнамерява да разпредели паметта за по-големите DNS кешове. Съхраняването на повече записи локално би трябвало да подобри процента на попадения в кеша и да намали трафика, който се изпраща към DNS сървърите.






Коментари
Моля, регистрирайте се от TУК!
Ако вече имате регистрация, натиснете ТУК!
Няма коментари към тази новина !
Последни коментари