به گزارش ایتنا به نقل از TechSpot، این تغییرات در پلتفرم Big Pineapple انجام شده؛ سامانهای که پشت سرویس محبوب 1.1.1.1 DNS و برخی دیگر از خدمات DNS کلادفلر قرار دارد.
مهندسان کلادفلر با اعمال پنج تغییر در کد Rust، اندازه معمول هر ورودی کش DNS را از ۹۵۳ بایت به ۴۲۰ بایت کاهش دادند. این کاهش بیش از ۵۰ درصدی در مقیاس زیرساخت کلادفلر تأثیر بسیار بزرگی دارد، زیرا Big Pineapple در هر لحظه بیش از ۲۵۰ میلیارد رکورد DNS را در خود نگه میدارد. در چنین مقیاسی، حتی حذف یک بایت از هر ورودی میتواند بیش از ۲۵۰ گیگابایت حافظه آزاد کند.
یکی از مهمترین تغییرات به نحوه استفاده از انواع داده Vec و String در Rust مربوط میشود. این ساختارها برای دادههایی طراحی شدهاند که ممکن است در آینده رشد کنند، اما رکوردهای DNS پس از ورود به کش معمولاً نیازی به افزایش اندازه ندارند. کلادفلر بنابراین آنها را با ساختارهای ثابت جایگزین کرد و بهتنهایی بیش از ۱۵ ترابایت RAM ذخیره شد.
مهندسان همچنین نحوه چیدمان پاسخهای DNS در حافظه را تغییر دادند. سه فهرست جداگانه رکوردها در یک بافر واحد قرار گرفتند و با Offsetهای دو بایتی مدیریت شدند. نامهایی که تکراری بودند نیز دیگر بهصورت کامل در کش ذخیره نمیشوند و هنگام ارسال پاسخ دوباره ساخته میشوند.
این بهینهسازی علاوه بر کاهش مصرف RAM، سرعت سامانه را نیز افزایش داده است. نرخ درج رکوردها از ۶۲۵ هزار به ۸۹۳ هزار ورودی در ثانیه رسیده و تأخیر جستوجو نیز از ۸۲۸ به ۶۷۰ نانوثانیه کاهش یافته است.
کلادفلر اکنون قصد دارد حافظه آزادشده را برای ایجاد کشهای DNS بزرگتر استفاده کند. ذخیره رکوردهای بیشتر بهصورت محلی میتواند نرخ Cache Hit را افزایش دهد و تعداد درخواستها به سرورهای DNS authoritative را کاهش دهد. این پروژه نشان میدهد بهینهسازی نرمافزار میتواند در زیرساختهای عظیم، گاهی به اندازه ارتقای سختافزار ارزشمند باشد.
