تعتزم Oracle إعادة تصميم DTrace لنظام التشغيل Linux باستخدام eBPF

شركة أوراكل ذكرت حول العمل على نقل التغييرات المتعلقة بـ DTrace إلى المنبع وخطط تنفيذ تقنية تصحيح الأخطاء الديناميكية DTrace أعلى البنية التحتية القياسية لـ Linux kernel، أي استخدام أنظمة فرعية مثل eBPF. في البداية، كانت المشكلة الرئيسية في استخدام DTrace على Linux هي عدم التوافق على مستوى الترخيص، ولكن في عام 2018، أصبحت Oracle مرخص كود DTrace ضمن GPLv2.

دتريس بالفعل وقت طويل يتم تقديمه كجزء من نواة موسعة لتوزيع Oracle Linux، ولكن لاستخدامه في توزيعات أخرى فإنه يتطلب استخدام تصحيحات kernel إضافية، مما يحد من استخدام هذه التقنية. على سبيل المثال، أوراكل أعدت تعليمات مفصلة لتثبيت واستخدام DTrace على نظام Fedora Linux. التجميع مطلوب للتثبيت أدوات واستخدام نواة لينكس المعاد بناؤها بقع. يُقترح أتمتة تنفيذ بناء النواة باستخدام تصحيحات Oracle وFedora النصي.

eBPF هو مترجم رمز بايت مدمج في Linux kernel يسمح لك بإنشاء معالجات تشغيل الشبكة، ومراقبة تشغيل النظام، واعتراض مكالمات النظام، والتحكم في الوصول، ومعالجة الأحداث مع ضبط الوقت (perf_event_open)، وحساب التردد ووقت تنفيذ العمليات، وإجراء التتبع باستخدام kprobes /uprobes /tracepoints. بفضل استخدام تجميع JIT، تتم ترجمة الكود الثانوي بسرعة إلى تعليمات الجهاز وتنفيذه بأداء التعليمات البرمجية الأصلية. يمكن تنفيذ DTrace أعلى eBPF، على غرار كيفية تنفيذه أعلى eBPF عمل أدوات التتبع الموجودة.

تم تطوير تقنية DTrace لنظام التشغيل Solaris لحل مشكلة التتبع الديناميكي لنواة النظام والتطبيقات النهائية، مما يمنح المستخدم القدرة على مراقبة سلوك النظام بالتفصيل وتشخيص المشكلات في الوقت الفعلي. أثناء عملية تصحيح الأخطاء، لا يؤثر DTrace على تشغيل التطبيقات قيد الدراسة ولا يؤثر بأي شكل من الأشكال على أدائها، مما يسمح لك بتنظيم تحليل الأنظمة قيد التشغيل أثناء التنقل. إحدى نقاط قوة DTrace هي لغة D عالية المستوى، المشابهة لـ AWK، حيث يكون إنشاء نصوص التتبع أسهل بكثير من استخدام الأدوات المقدمة لكتابة معالجات eBPF في C وPython وLua مع المكتبات الخارجية.

ويعمل مهندسون من Oracle أيضًا على إنشاء واجهة eBPF الخلفية لدول مجلس التعاون الخليجي وقد قاموا بنشرها بالفعل مجموعة التصحيح لدمج دعم eBPF في دول مجلس التعاون الخليجي و حقق بما في ذلك التعليمات البرمجية لدعم eBPF في ملفات GNU binutils. في البداية، تعتمد الواجهة الخلفية لدعم eBPF على تقنيات LLVM، لكن شركة Oracle مهتمة بظهور قدرة قياسية في دول مجلس التعاون الخليجي على إنشاء برامج لـ eBPF، والتي ستسمح باستخدام مجموعة أدوات واحدة لبناء نواة Linux وبناء البرامج. لـ eBPF.

بالإضافة إلى الواجهة الخلفية لإنشاء كود البايت، تتضمن التصحيحات المقترحة لـGC أيضًا منفذ libgcc لـ eBPF وأدوات لإنشاء ملفات ELF، مما يجعل من الممكن تنفيذ التعليمات البرمجية في جهاز eBPF الظاهري باستخدام أدوات التحميل المتوفرة من kernel. في الوقت الحالي، يمكن ترجمة التعليمات البرمجية في لغة C إلى كود بايت (لا تتوفر جميع ميزات اللغة)، ولكن من المتوقع في المستقبل توسيع إمكانيات لغة C المتاحة للاستخدام، وإضافة دعم للغات أخرى، وإنشاء جهاز محاكاة، و إضافة دعم دول مجلس التعاون الخليجي لتصحيح أخطاء برامج eBPF دون تحميلها إلى النواة.

المصدر: opennet.ru

إضافة تعليق