ftrace

ftrace ( متتبع الدوال ) هو إطار عمل لتتبع العمليات في نواة لينكس . على الرغم من أن اسمه الأصلي، متتبع الدوال، مشتق من قدرة ftrace على تسجيل المعلومات المتعلقة باستدعاءات الدوال المختلفة التي تُنفذ أثناء تشغيل النواة ، إلا أن إمكانيات التتبع في ftrace تغطي نطاقًا أوسع بكثير من العمليات الداخلية للنواة. [ 2 ] [ 3 ]

تفاصيل

بفضل إضافات التتبع المتنوعة، يُمكن استهداف ftrace لنقاط تتبع ثابتة مختلفة ، مثل أحداث الجدولة ، والمقاطعات ، وعمليات الإدخال/الإخراج المُرتبطة بالذاكرة ، وانتقالات حالة طاقة وحدة المعالجة المركزية ، والعمليات المتعلقة بأنظمة الملفات والمحاكاة الافتراضية . كما يُتيح التتبع الديناميكي لاستدعاءات وظائف النواة، مع إمكانية تقييدها اختياريًا بمجموعة فرعية من الوظائف باستخدام أنماط glob ، بالإضافة إلى إمكانية إنشاء رسوم بيانية للاستدعاءات وتقديم تقارير عن استخدام المكدس . في الوقت نفسه، يُمكن استخدام ftrace لقياس فترات الكمون المختلفة داخل نواة لينكس، مثل مدة تعطيل المقاطعات أو الاستباق . [ 2 ] [ 4 ] [ 5 ] : 3-11، 14، 18

يتم بناء نواة لينكس المُفعّلة لـ ftrace بتفعيل خيار تهيئة النواة CONFIG_FUNCTION_TRACER . يتم التفاعل الكامل مع ftrace أثناء التشغيل من خلال ملفات افتراضية قابلة للقراءة والكتابة موجودة في نظام ملفات debugfs مُثبّت خصيصًا ؛ ونتيجةً لذلك، لا يتطلب ftrace أي أدوات مساعدة متخصصة في مساحة المستخدم للتشغيل. [ 2 ] [ 3 ] [ 6 ] ومع ذلك، توجد أدوات مساعدة إضافية في مساحة المستخدم توفر ميزات أكثر تقدمًا لتسجيل البيانات وتحليلها وعرضها؛ ومن أمثلة هذه الأدوات trace-cmd و KernelShark . [ 2 ] [ 5 ] : 31-47 [ 7 ] [ 8 ]

يعتمد برنامج ftrace داخليًا على آلية التنميط الخاصة بمترجم gcc لإضافة تعليمات الآلة إلى النسخ المُجمّعة من جميع دوال نواة النظام على مستوى المصدر ، مما يُعيد توجيه تنفيذ الدوال إلى مسارات التتبع ومكونات التتبع الإضافية الخاصة بـ ftrace التي تُجري عملية التتبع الفعلية. يتم تعديل تعليمات " نقطة الدخول " هذه، التي يُنشئها gcc، بواسطة ftrace عند بدء تشغيل النواة ، وتُغيّر لاحقًا أثناء التشغيل بواسطة ftrace بين تعليمات NOP والقفزات الفعلية إلى مسارات التتبع، وذلك بناءً على أنواع التتبع والخيارات المُهيأة أثناء التشغيل. [ 9 ] [ 10 ]

تم تطوير ftrace بشكل أساسي بواسطة ستيفن روستيدت، وتم دمجه في نواة لينكس الرئيسية في إصدار النواة 2.6.27، والذي تم إصداره في 9 أكتوبر 2008. [ 11 ]

انظر أيضاً

  • DTrace إطار عمل لتتبع مشاكل النواة والتطبيقات وإصلاحها، تم تطويره في الأصل لنظام Solaris 
  • ktrace أداة مساعدة لأنظمة BSD Unix و Mac OS X لتتبع تفاعلات النواة مع البرامج 
  • ltrace أداة تصحيح أخطاء لينكس، تعرض استدعاءات تطبيقات المستخدم للمكتبات المشتركة 
  • strace أداة تصحيح الأخطاء لنظام Linux وبعض الأنظمة الأخرى الشبيهة بنظام Unix، تراقب استدعاءات النظام التي يستخدمها البرنامج وجميع الإشارات المستلمة 
  • SystemTap لغة برمجة نصية وأداة مساعدة تُستخدم لفحص أنظمة لينكس 

مراجع

  1. "مصدر نواة لينكس: ملف kernel/COPYING" . kernel.org . 13 مارس 1994. تم الاطلاع عليه في 11 يونيو 2016 .
  2. 1 2 3 4 جيك إيدج (13 مارس 2009). "نظرة على ftrace" . LWN.net . تم الاطلاع عليه في 23 يوليو 2014 .
  3. 1 2 ستيفن روستيدت (16 يونيو 2014). "توثيق نواة لينكس: Documentation/trace/ftrace.txt" . kernel.org . تم الاطلاع عليه في 23 يوليو 2014 .
  4. "وثائق Red Hat Enterprise MRG 2، القسم 3.8. استخدام أداة ftrace لتتبع زمن الاستجابة" . Red Hat . 23 مايو 2014. تم الاطلاع عليه في 24 يوليو 2014 .
  5. 1 2 ستيفن روستيدت (18 أكتوبر 2010). "Ftrace: تتبع نواة لينكس" (ملف PDF) . linuxfoundation.org . مؤرشف من الأصل (ملف PDF) في 8 مارس 2013. تم الاطلاع عليه في 23 يوليو 2014 .
  6. "وثائق Red Hat Enterprise Linux 6، القسم 6.5. ftrace" . Red Hat . 14 مارس 2014. تم الاطلاع عليه في 23 يوليو 2014 .
  7. ستيفن روستيدت (20 أكتوبر 2010). "trace-cmd: واجهة أمامية لـ Ftrace" . LWN.net . تم الاطلاع عليه في 19 يناير 2015 .
  8. ستيفن روستيدت (2 فبراير 2011). "استخدام KernelShark لتحليل جدولة الوقت الحقيقي" . LWN.net . تم الاطلاع عليه في 11 يونيو 2016 .
  9. ستيفن روستيدت (5 يناير 2015). "Ftrace Kernel Hooks: أكثر من مجرد تتبع" (ملف PDF) . linuxplumbersconf.org . الصفحات 6-12 ، 24، 34، 56-58 . تاريخ الاطلاع: 11 يونيو 2016 . 
  10. تيم بيرد (1 نوفمبر 2012). "قياس مدة الوظيفة باستخدام Ftrace" (ملف PDF) . elinux.org . الصفحات 5-6 ، 12-14 . تم الاطلاع عليه في 11 يونيو 2016 . 
  11. "نواة لينكس 2.6.27، القسم 1.7. دعم ftrace وsysprof" . kernelnewbies.org . 9 أكتوبر 2008. تم الاطلاع عليه في 23 يوليو 2014 .