تعتزم أوراكل إعادة تصميم DTrace لـ Linux باستخدام eBPF

شركة أوراكل ذكرت о работе по передаче связанных с DTrace изменений в upstream и планах по реализации технологии динамической отладки DTrace поверх штатной инфрастуруктуры ядра Linuxأي باستخدام أنظمة فرعية مثل eBPF. في البداية، كانت المشكلة الرئيسية في استخدام DTrace في Linux была несовместимость на уровне лицензий, но в 2018 году компания Oracle مرخص كود DTrace ضمن GPLv2.

دتريس بالفعل وقت طويل предлагается в составе расширенного ядра для дистрибутива Oracle Linux, но для своего использования в других дистрибитувах требует применения дополнительных патчей для ядра, что ограничивает использование указанной технологии. В качестве примера, компания Oracle أعدت детальную инструкцию по установке и использованию DTrace в Fedora Linux. Для установки требуется сборка أدوات и применение ядра Linux, пересобранного с بقع. يُقترح أتمتة تنفيذ بناء النواة باستخدام تصحيحات Oracle وFedora النصي.

eBPF представляет собой встроенный в ядро Linux интерпретатор байткода, позволяющий создавать обработчики сетевых операций, отслеживать работу систем, перехватывать системные вызовы, контролировать доступ, обрабатывать события с сохранением хронометража (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 заинтересована в появлении в GCC штатной возможности генерации программ для eBPF, что позволит использовать один инструментарий как для сборки ядра Linux, так и для сборки программ для eBPF.

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

المصدر: opennet.ru

شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster