نظام تاب

في مجال الحوسبة ، يُعدّ SystemTap ( stap ) لغة برمجة نصية وأداة لتحليل أنظمة التشغيل العاملة بنظام Linux بشكل ديناميكي . يمكن لمسؤولي النظام استخدام SystemTap لاستخراج البيانات وتصفيتها وتلخيصها، مما يُتيح تشخيص المشكلات المعقدة في الأداء أو الوظائف .

يتكون نظام SystemTap من برمجيات مجانية ومفتوحة المصدر ، ويتضمن مساهمات من Red Hat و IBM و Intel و Hitachi و Oracle وجامعة ويسكونسن-ماديسون وأعضاء آخرين في المجتمع. [ 1 ]

تاريخ

ظهر نظام SystemTap لأول مرة في عام 2005 في نظام Red Hat Enterprise Linux 4 Update 2 كمعاينة تقنية. [ 2 ]

بعد أربع سنوات من التطوير، تم إصدار SystemTap 1.0 في عام 2009. [ 3 ]

اعتبارًا من عام 2011، يعمل SystemTap بشكل كامل مدعومًا في جميع توزيعات Linux بما في ذلك RHEL / CentOS 5 [ 4 ] منذ التحديث 2، وSLES 10، [ 5 ] وFedora وDebian وUbuntu.

تمت إضافة نقاط التتبع في CPython VM و JVM في SystemTap 1.2 في عام 2009. [ 6 ]

في نوفمبر 2019، تم تضمين برنامج SystemTap 4.2 كمصدر لبروميثيوس .

الاستخدام

تُكتب ملفات SystemTap بلغة SystemTap [ 7 ] (وتُحفظ .stpكملفات) ويتم تشغيلها باستخدام stapسطر الأوامر. [ 8 ]

يُجري النظام عدة مراحل تحليلية على البرنامج النصي قبل السماح بتشغيله. يمكن تنفيذ البرامج النصية باستخدام أحد ثلاثة أنظمة خلفية يتم اختيارها عبر --runtime=الخيار. النظام الافتراضي هو وحدة نواة قابلة للتحميل ، والتي تتمتع بأقصى قدرة على فحص ومعالجة أي جزء من النظام، وبالتالي تتطلب أعلى مستوى من الصلاحيات. يعتمد نظام خلفي آخر على مكتبة تحليل البرامج الديناميكية DynInst لتحليل برامج المستخدم الخاصة فقط، ويتطلب أقل مستوى من الصلاحيات. أما النظام الخلفي الأحدث [ 9 ] فيعتمد على بايت كود eBPF ، وهو محدود بإمكانيات مُفسِّر نواة لينكس ، ويتطلب مستوى متوسطًا من الصلاحيات. في كل حالة، يتم إلغاء تحميل الوحدة عند انتهاء تشغيل البرنامج النصي.

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

قد تحتوي بعض البرامج النصية المُفعّلة في "وضع الخبير" على لغة C مُضمّنة، والتي يُمكن تشغيلها باستخدام -gخيار سطر الأوامر. مع ذلك، يُنصح بتجنب استخدام وضع الخبير، ويتضمن كل إصدار من SystemTap نقاط فحص إضافية مُصممة للاستغناء عن البرامج النصية المُفعّلة في وضع الخبير. يُعدّ وضع الخبير ضروريًا للسماح للبرامج النصية بتعديل حالة البرنامج المُجهّز، مثل تطبيق بعض أنواع إصلاحات الأمان الطارئة.

ابتداءً من الإصدار 1.7 من برنامج SystemTap، يقوم البرنامج بتطبيق مجموعة stapsys الجديدة ومستوى الامتيازات. [ 10 ]

أمثلة بسيطة

يعرض النص البرمجي التالي جميع التطبيقات التي تقوم بتعيين خيارات مقبس TCP على النظام، وما هي الخيارات التي يتم تعيينها، وما إذا تم تعيين الخيار بنجاح أم لا.

# عرض خيارات إعداد المقابس# إرجاع حالة التفعيل أو التعطيل بناءً على قيمة optval function getstatus ( optval ) { if ( optval == 1 ) return "enabling" else return "disabling" }بدء التحقيق { طباعة ( "\nالتحقق من التطبيقات التي تقوم بتعيين خيارات المقبس\n" ) }# ضبط خيار المقبس probe tcp.setsockopt { status = getstatus ( user_int ( $ optval )) printf ( "التطبيق '%s' (PID %d) هو %s خيار المقبس %s... " , execname ( ) , pid ( ) , status , optstr ) } # التحقق من نجاح ضبط خيار المقبس probe tcp.setsockopt.return { if ( ret == 0 ) printf ( "success" ) else printf ( "failed" ) printf ( " \n" ) }نهاية التحقيق { طباعة ( "\nإغلاق\n" ) }

تتضمن حزمة SystemTap العديد من الأمثلة الأخرى. [ 11 ] كما توجد أمثلة واقعية لاستخدام SystemTap في صفحة "قصص الحرب". [ 12 ]

استيراد البرامج النصية من تقنيات التتبع الأخرى

يمكن لـ SystemTap الاتصال بعلامات DTrace عند تجميعها في تطبيق باستخدام وحدات الماكرو من sys/sdt.hملف الرأس.

انظر أيضاً

مراجع

  1. "تحديث SystemTap" . LWN.net .
  2. "وثائق المنتج لنظام Red Hat Enterprise Linux" . Red Hat .
  3. "جوش ستون - إصدار SystemTap 1.0" .
  4. "وثائق المنتج" . ريد هات .
  5. "تحديث اختياري لبرنامج SystemTap" . نوفيل . 10 أكتوبر 2006.
  6. "الميزات/SystemtapStaticProbes - FedoraProject" . Fedoraproject.
  7. "مرجع لغة SystemTap" .
  8. قارن مع رومانس، روب (2009). "مرجع لغة SystemTap: دليل للبنى والتركيبات المستخدمة في نصوص SystemTap البرمجية". ريد هات: 4. CiteSeerX 10.1.1.172.5186 . يتطلب SystemTap [...] صلاحيات الجذر لتشغيل كائنات النواة التي يبنيها باستخدام أمر sudo، المطبق على برنامج staprun. [...] يُعد staprun جزءًا من حزمة SystemTap، وهو مخصص لتحميل وتفريغ الوحدات النمطية ونقل البيانات من النواة إلى المستخدم. {{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal=
  9. ميري، آرون (18 أكتوبر 2017). "إصدار Systemtap 3.2" . تم الاطلاع عليه بتاريخ 18 أكتوبر 2017. أعلن فريق Systemtap عن الإصدار 3.2 [...] واجهة eBPF (مرشح حزم بيركلي الموسع) التجريبية المبكرة [...]
  10. إيجلر، فرانك تش. (2012-02-01). "إصدار systemtap 1.7" . تم الاطلاع عليه بتاريخ 2013-03-26 . أعلن فريق systemtap عن الإصدار 1.7 [...] تمت إضافة المجموعة الجديدة ومستوى الامتياز "stapsys" [...]
  11. "أمثلة على SystemTap" .
  12. "WarStories - Systemtap Wiki" .