bpftime: وقت تشغيل eBPF لمساحة المستخدمين لـ Uprobe وSyscall

bpftime

على اليسار، kernek الأصلي مع eBPF | الحق: وقت bpf

Bpftime هو مشروع تم وضعه كوقت تشغيل وجهاز افتراضي تم تصميمه من أجله تشغيل برامج تشغيل eBPF في مساحة المستخدم.

وقت الذروة يتيح تتبع eBPF وبرامج التدخل في العمليات يعمل بالكامل في مساحة المستخدم، باستخدام وظائف مثل uprobe واعتراض مكالمات النظام.

حول وقت بي بي إف

إحدى الميزات البارزة لـ bpftime هي القدرة على تقليل الحمل الزائد بشكل كبير عن طريق إزالة مفاتيح السياق غير الضرورية. مقارنة ب استخدام الوظائف مسبار ومسبار الحالب التي تقدمها نواة لينكس، يمكن أن يحقق bpftime تخفيضًا في النفقات العامة يصل إلى عشرة أضعاف والذي لا يعمل على تحسين الأداء فحسب، بل يعمل أيضًا على تبسيط عملية تصحيح الأخطاء إلى حد كبير.

يذكر أن اعتراض مكالمات النظام وتكامل الشيكات من uprobe يتم تنفيذها باستخدام تقنية إعادة كتابة التعليمات البرمجية قابل للتنفيذ (إعادة الكتابة الثنائية). تتضمن هذه التقنية تعديل رمز الجهاز الخاص بالتطبيق قيد التشغيل، حيث يتم استبدال استدعاءات استدعاءات النظام ونقاط الإدخال والوظائف المحلية بالانتقال إلى معالجات تصحيح الأخطاء.

بالإضافة إلى ذلك، وقت bpf يوفر ميزة إمكانية استخدامه على الأنظمة التي لا تحتوي على Linux kernel ولا يتطلب امتيازات مرتفعة لتحميل تطبيق eBPF في النواة. وهذا يجعلها سهلة الوصول ومتعددة الاستخدامات في مجموعة متنوعة من البيئات وتكوينات النظام.

وقت الذروة يقدم مجموعة واسعة من العمليات لمعالجة الوظائف والتحكم فيها، وإرفاق المعالجات، وتصفية استدعاءات النظام، وتنفيذ إجراءات مختلفة، بما في ذلك:

  • استبدال أو تعديل الوظائف.
  • إرفاق وحدات التحكم (الخطافات) والمرشحات.
  • إعادة توجيه أو حظر أو استبدال معلمات استدعاء النظام.
  • اعتراض نقاط الدخول والخروج من الوظائف.
  • استبدال المعالج بإزاحة تعسفية في الكود.

من السمات البارزة لـ Bpftime هي القدرة على إرفاق أي عملية قيد التشغيل على النظام دون الحاجة إلى إعادة تشغيله أو إعادة بنائه. يمكن استبدال Bpftime في العمليات لتشغيل العمليات من خلالها ptrace وتحميلها عبر LD_PRELOAD.

باستخدام bpftime، يمكن تشغيل أنظمة التتبع مثل BCC وbpftrace وDeepflow في مساحة المستخدم. على سبيل المثال، أظهرنا استخدام البرنامج النصي sslsniff الخاص بإطار عمل BCC لتحليل حركة المرور المشفرة وحفظها في nginx. في الاختبارات، انخفض أداء nginx بنسبة 58% عند تشغيل sslsniff على جانب النواة وبنسبة 12,3% عند نقل برنامج التشغيل إلى مساحة المستخدم.

بالإضافة إلى ذلك، كجزء من Bpftime، يتم حاليًا تطوير وقت تشغيل يسمح بإرفاق برامج eBPF باستدعاءات النظام واختبار نقاط التتبع. يسمح الجهاز الظاهري eBPF المزود بـ JIT بالتنفيذ المعزول لبرامج eBPF على مستوى عملية المستخدم، مع دعم تجميع AOT. تعمل عملية الخلفية على تسهيل التفاعل مع النواة وتنظيم التعاون مع النظام الفرعي com.upprobe من النواة.

الآلة الافتراضية eGMP يتم تعبئتها كمكتبة مكون إضافي وتوفر واجهة برمجة تطبيقات مشابهة لـ ubpf، والذي يسمح بدمج وظيفة eBPF بسهولة في المشاريع الأخرى. لتجميع ملخص البيانات من عمليات متعددة، يتم دعم إنشاء خرائط eBPF المشتركة الموجودة في الذاكرة المشتركة.

إجمالاً، لا يقدم Bpftime مجموعة كاملة من الأدوات لمعالجة الوظائف والتحكم فيها في وقت التشغيل فحسب، بل يقدم أيضًا يجعل من السهل دمج وظائف eBPF في مشاريع أخرىوبالتالي توفير حل مرن وقوي لمختلف التطبيقات وسيناريوهات الاستخدام. بالإضافة إلى ذلك، فإن دعم برامج تشغيل eBPF القياسية المكتوبة للاستخدام في kernel واستخدام الأدوات القياسية المستندة إلى clang و libbpf للتجميع يضمن تجربة تطوير فعالة ومتسقة.

بالنسبة للمهتمين بالمشروع، يجب أن تعلموا أن كود المشروع مكتوب بلغة C/C++ ويتم توزيعه بموجب ترخيص MIT، مما يضمن إمكانية الوصول إليه وشفافيته للمجتمع.

إذا كنت تريد تعلم المزيد عنها، يمكنك التحقق من التفاصيل في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.