Cloudflare зекономила 100 ТБ оперативної пам’яті завдяки оптимізації DNS-кешу
Компанія Cloudflare оголосила про значну економію ресурсів, звільнивши близько 100 ТБ оперативної пам'яті в своїй інфраструктурі без заміни фізичних модулів серверів. Це стало можливим завдяки оптимізації структури збереження записів у DNS-кеші сервісу 1.1.1.1.
За словами інженера систем Себастіана Нойтебума, у платформі Big Pineapple було впроваджено 5 змін на мові програмування Rust. Завдяки цьому обсяг кожного кешованого запису зменшився з 953 до 420 байтів, що призвело до підвищення швидкості роботи: продуктивність вставки записів зросла на 43%, а затримка пошуку знизилася на 19%.
Ключові зміни в оптимізації
- Заміна контейнерів Rust типу Vec та String на фіксовані масиви, що зекономило понад 15 ТБ пам'яті.
- Об'єднання трьох списків записів у кожній DNS-відповіді в один буфер з індексацією за двобайтовими зміщеннями.
- Збереження даних записів у вигляді довжино-префіксованих байтів у форматі «на дроті».
Оптимізація дозволила уникнути надлишкових витрат пам'яті, адже в кеші Big Pineapple зберігається понад 250 мільярдів DNS-записів. Звільнена пам'ять еквівалентна обсягу DDR5 у 130 серверах Cloudflare 13-го покоління.
Тестування показало, що швидкість вставки досягла 893 тисяч записів на секунду, а затримка пошуку скоротилася з 828 до 670 наносекунд. Протягом періоду з середини травня до початку липня середній обсяг резидентної пам'яті на інстанс знизився з 9,3 ГБ до 5,3 ГБ.
Це вже другий великий проєкт оптимізації пам'яті за останній рік; у вересні компанія завершила переписування шару обробки запитів FL2 на Rust. Cloudflare зазначає, що звільнені ресурси не будуть використані для зменшення конфігурацій серверів, а спрямовуватимуться на розширення DNS-кешів.
Джерело: Mezha.Media (https://mezha.ua/news/cloudflare-optimizuvala-dns-kesh-i-zvilnila-ponad-100-tb-ozp-314618/)