Cloudflare توفّر 100 تيرابايت من الذاكرة في ذاكرة 1.1.1.1 المؤقتة
خمس تحسينات في لغة Rust خفّضت استهلاك الذاكرة لكل مدخل من 953 بايت إلى 420. وتذكر الشركة ارتفاع إنتاجية الإدراج 43% وانخفاض زمن البحث 19%.
شرحت Cloudflare مجموعة من تحسينات الذاكرة أجرتها على نظام Big Pineapple، وهو النظام الذي يقف خلف محلّل DNS العام 1.1.1.1. وبحسب رقم الشركة، تحرّر نحو 100 تيرابايت من الذاكرة عبر أسطول خوادمها.
ويوضّح حجمُ النظام جوهرَ المسألة: فهو يحتفظ بأكثر من 250 مليار مدخل في الذاكرة المؤقتة. وعند هذا الحجم، كل بايت يُهدر في المدخل الواحد يكلّف 250 غيغابايت في المجموع.
والتغييرات الخمسة كلّها تتعلّق ببنى البيانات في لغة Rust. فاستبدال حقول Vec وString بمكافئاتها من نوع Box ألغى حقول السعة غير المستخدَمة ووفّر وحده 64 بايت لكل مدخل. وتخزين أقسام الإجابة والسلطة والإضافات في قائمة واحدة مع إزاحات u16، بدل قوائم منفصلة، أضاف 28 بايت. ولم يعد حقل مالك السجلّ يُخزَّن حين يطابق النطاق المطلوب، بل يُستنتج عند القراءة. ونقل متغيّرات التعداد الكبيرة إلى الكومة وفّر أكثر من 120 بايت لكل سجلّ في الأنواع الشائعة مثل A وAAAA. وأخيرًا صارت بيانات السجلّ تُحفَظ بايتات خامًا في مخزن متّصل بدل بنى مُحلَّلة.
وإجمالًا انخفضت الذاكرة لكل مدخل من 953 بايت إلى 420، أي بنسبة 56%. وتقول الشركة إن ذلك لم يأتِ على حساب السرعة: إذ ارتفعت إنتاجية الإدراج في الذاكرة المؤقتة 43% وانخفض زمن البحث 19%.
ويعدّد المقال المقايضات أيضًا: صار لا بدّ من المرور على السجلّات بالتسلسل من دون وصول عشوائي، ولا تزال السجلّات المتضمّنة أسماء نطاقات تحتاج إلى تحليل من أجل ضغط أسماء DNS، كما أن نقل المتغيّرات إلى الكومة يضيف عبء المُخصِّص وتشتّتًا في مواقع الذاكرة.
للتفاصيل: مقال مدوّنة Cloudflare.