perf (Linux)

perf (يسمى أحيانًا perf_events [ 1 ] أو أدوات perf ، في الأصل Performance Counters for Linux ، PCL ) [ 2 ] هو أداة لتحليل الأداء في Linux ، وهي متاحة من إصدار نواة Linux 2.6.31 في عام 2009. [ 3 ] يتم الوصول إلى أداة التحكم في مساحة المستخدمperf ، المسماة ، من سطر الأوامر وتوفر عددًا من الأوامر الفرعية ؛ وهي قادرة على إجراء تحليل إحصائي للنظام بأكمله (كل من نواة النظام ورمز مساحة المستخدم ).

يدعم البرنامج عدادات أداء الأجهزة ، ونقاط التتبع ، وعدادات أداء البرامج (مثل hrtimer)، والمجسات الديناميكية (على سبيل المثال، kprobes أو uprobes). [ 4 ] في عام 2012، أقرّ اثنان من مهندسي IBM بأن perf (إلى جانب OProfile ) هو أحد أكثر أدوات تحليل أداء عدادات الأداء استخدامًا على نظام Linux. [ 5 ]

تطبيق

تتألف واجهة الربط بين أداة perf ونواة النظام من استدعاء نظام واحد فقط ، ويتم ذلك عبر مُعرِّف ملف ومنطقة ذاكرة مُرتبطة. [ 6 ] على عكس LTTng أو الإصدارات الأقدم من oprofile ، لا حاجة إلى برامج خدمة ، حيث أن معظم الوظائف مُدمجة في النواة. تقوم أداة perf بتفريغ البيانات الأولية من المخزن المؤقت المُرتبط إلى القرص عند امتلائه. ووفقًا لـ ر. فيتيلو ( مختبر لورانس بيركلي الوطني )، فإن عملية تحليل الأداء التي تُجريها أداة perf تتضمن تكلفة إضافية منخفضة للغاية. [ 6 ]

اعتبارًا من عام 2010تشمل البنى التي تدعم عدادات الأجهزة: x86 ، و PowerPC 64، و UltraSPARC ( الإصدارين الثالث والرابع )، و ARM (الإصدارات 5، و6، و7، و Cortex-A8 و- A9 )، و Alpha EV56، و SuperH . [ 4 ] يتوفر استخدام سجلات التفرع الأخير [ 7 ] ، وهو تطبيق لتتبع التفرعات متوفر في معالجات Intel منذ Pentium 4 ، كتحديث برمجي. [ 6 ] منذ الإصدار 3.14 من نواة Linux الرئيسية ، الصادر في 31 مارس 2014، يدعم perf أيضًا حد متوسط ​​الطاقة التشغيلي (RAPL) لقياس استهلاك الطاقة، وهي ميزة متوفرة في بعض معالجات Intel. [ 8 ] [ 9 ] [ 10 ]

يدعم العديد من توزيعات لينكس الشائعة برنامج Perf بشكل أصلي، بما في ذلك Red Hat Enterprise Linux (منذ إصدارها السادس عام 2010) [ 11 ] و Debian في حزمة linux-tools-common (منذ إصدار Debian  6.0 (Squeeze) عام 2011). [ 12 ]

الأوامر الفرعية

يُستخدم الأمر perf مع العديد من الأوامر الفرعية:

  • stat: قياس إجمالي عدد الأحداث لبرنامج واحد أو للنظام لفترة زمنية محددة
  • topعرض ديناميكي لأهم الوظائف ، على غرار أعلى الصفحة
  • record: قياس وحفظ بيانات أخذ العينات لبرنامج واحد [ 13 ]
  • report: تحليل الملف الناتج عن سجل الأداء؛ يمكن إنشاء ملف تعريف مسطح أو رسم بياني. [ 13 ]
  • annotate: إضافة تعليقات توضيحية إلى المصادر أو التجميع
  • sched: تتبع/قياس إجراءات المجدول وزمن الاستجابة [ 14 ]
  • list: قائمة بالفعاليات المتاحة

نقد

لا تُعدّ وثائق أداة perf مفصلةً للغاية (حتى عام 2014)؛ فعلى سبيل المثال، لا توثّق معظم الأحداث أو تشرح أسماءها البديلة (غالبًا ما تُستخدم أدوات خارجية للحصول على أسماء الأحداث ورموزها [ 15 ] ). [ 16 ] كما لا تستطيع أدوات perf إجراء التحليل بناءً على وقت التشغيل الفعلي، [ 16 ] وهو أمرٌ تمّت معالجته بإضافة خاصية التحليل خارج وحدة المعالجة المركزية.

حماية

احتوى النظام الفرعي perf في نواة لينكس من الإصدار 2.6.37 إلى 3.8.8، ونواة RHEL6 الإصدار 2.6.32، على ثغرة أمنية ( CVE - 2013-2094 )، استُغلت للحصول على صلاحيات الجذر من قِبل مستخدم محلي. [ 17 ] [ 18 ] كانت المشكلة ناتجة عن استخدام نوع بيانات غير صحيح (عدد صحيح 32 بت بدلاً من 64 بت) في مسار رمز التحقق من event_id. [ 19 ]

انظر أيضاً

مراجع

  1. فينس ويفر، صفحة الويب غير الرسمية لأحداث أداء لينكس
  2. فعالية أداء لينكس: الميزات والتكاليف الإضافية // ورشة عمل FastPath لعام 2013، فينس ويفر
  3. جيك إيدج، تمت إضافة Perfcounters إلى النسخة الرئيسية ، LWN 1 يوليو 2009، "تم تضمين perfcounters في النسخة الرئيسية خلال نافذة دمج 2.6.31 التي تم الانتهاء منها مؤخرًا"
  4. 1 2 أرنالدو كارفالو دي ميلو، أدوات تحسين أداء Linux الجديدة ، عرض تقديمي من مؤتمر Linux، سبتمبر 2010
  5. أ. زانيلا، ر. أرنولد. تقييم أداء لينكس على معالجات باور. تحليل الأداء باستخدام أدوات لينكس ، ١٢ يونيو ٢٠١٢ // المكتبة التقنية لـ IBM DeveloperWorks
  6. 1 2 3 روبرتو أ. فيتيلو ( مختبر لورانس بيركلي الوطني ). تطوير أدوات الأداء ، 16 يونيو 2011، عرض تقديمي من مؤتمر "الحوسبة المستقبلية في فيزياء الجسيمات"
  7. دليل مطوري البرامج لهياكل Intel® 64 و IA-32، المجلد 3ب: دليل برمجة النظام، الجزء 2. Intel. يونيو 2009. ص 19-2، المجلد 3. 
  8. جيك إيدج (9 أبريل 2014). "الكثير من ميزات الأداء الجديدة" . LWN.net . تم الاطلاع عليه بتاريخ 22 أبريل 2014 .
  9. جاكوب بان (2013-04-02). "سائق RAPL (حد الطاقة المتوسطة الجارية)" . LWN.net . تم الاسترجاع في 2014-04-22 .
  10. "kernel/git/torvalds/linux.git - شجرة مصدر نواة لينكس" . Git.kernel.org. 2014-01-20 . تم الاطلاع عليه بتاريخ 2014-03-31 .
  11. 6.4. أدوات عدادات الأداء لنظام لينكس (PCL) و perf // دليل مطوري RHEL
  12. "ديبيان - تفاصيل حزمة linux-tools-2.6.32 في squeeze" . Packages.debian.org . تم الاطلاع عليه بتاريخ 31 مارس 2014 .
  13. 1 2 أورس فاسلر، تنسيق ملف perf ، مؤرشف في 14 ديسمبر 2012 على موقع Wayback Machine ، مختبر CERN المفتوح ، 2011
  14. إنجو مولنار ، "perf sched": أداة لالتقاط وقياس وتحليل زمن استجابة وسلوك المجدول ، 17 سبتمبر 2009
  15. كيفية مراقبة النطاق الكامل لأحداث أداء وحدة المعالجة المركزية // بويان نيكوليتش، 2012
  16. 1 2 روبرت هاس (PostgreSQL)، الأداء: الجيد والسيئ والقبيح // 6 يونيو 2012
  17. مايكل لارابيل (15 مايو 2013). "استغلال ثغرة أمنية جديدة في نواة لينكس" . فورونيكس.
  18. كوربيت (2013-05-15). "ثغرة أمنية محلية في نواة النظام" . LWN.
  19. جو داماتو (20 مايو 2013). "نظرة فاحصة على ثغرة تصعيد امتيازات حديثة في لينكس (CVE-2013-2094)" . مؤرشف من الأصل بتاريخ 24 يوليو 2019. تم الاطلاع عليه بتاريخ 18 يوليو 2013 .