لينكس التنميط مع محلل الأداء

لينكس التنميط مع محلل الأداء


الزملاء ، أجد أنه من المفيد التحدث عن ملف تعريف رمز مناسب ومجاني لنظام Linux / Solaris. إنها جزء من حزمة Sun / Oracle Developer Studio [1]. في رأيي ، فإن بعض الأجزاء الأخرى من بيئة التطوير هذه غير مجدية إلى حد ما ، لكن المُنشئ ، الذي يُدعى Performance Analyzer ، ناجح للغاية. إنه سهل الاستخدام ، تحليل واضح ومناسب للنتائج. في رأيي ، لا يزال المحلل متفوقًا على العديد من نظرائه في Linux. باستخدام هذه الأداة ، يبدو استخدام gprof مثل نزوة غريبة ومضيعة للوقت.


إذا كنت لا تخطط لاستخدام محلل الأداء على الفور ، فلا يمكنك قراءة المزيد. فقط تذكر أن مثل هذا المنتج موجود. إذا كان من الممتع إلقاء نظرة ، فمرحباً بك.


يتكون ملف التعريف من جزأين: التجميع - بدء تشغيل التطبيق وجمع البيانات وتسجيل نتائج التجربة ؛ analyser عبارة عن واجهة رسومية تقرأ بيانات التجربة وتوفر فرصًا للتحليل المريح للنقاط الساخنة وأشجار استدعاء الوظائف.


باختصار حول المزايا والعيوب الهامة:


الايجابيات:


  • مجانا
  • لا يتطلب إعادة تجميع الشفرة وربط الملف القابل للتنفيذ ؛
  • يعمل مع جنو ومجمعي الشمس ؛
  • لا يغير وقت تنفيذ البرنامج عند جمع البيانات ؛
  • لديها واجهة رسومية بديهية.
  • مجهزة واجهة سطر الأوامر المتقدمة للتحليل التلقائي.
  • يسمح لك أن ننظر بسرعة في نتيجة المترجم.
  • لديه ملف تعريف إحصائي دقيق بما فيه الكفاية حتى بالنسبة للأجزاء غير الشاقة ؛
  • إجراء تحليل مريح وتحليل مقارن للعديد من برامج الإطلاق ؛
  • لا تشوه النتائج.

بعض السلبيات:


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

منصة


بشكل رسمي ، يدعم Oracle Developer Studio فقط Solaris و Oracle Linux. في الواقع ، لقد نجحت في استخدامه على Redhat و CentOS و Ubuntu. جمع / محلل اعتدت فقط لتحسين تطبيقات C / C ++ / Fortran. تنص الوثائق على أن الأداة تعالج أيضًا مشاريع Java.


تشغيل وتحليل النتائج


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


لذلك ، لبدء تحتاج ، كالعادة ، لجمع الملف القابل للتنفيذ ، على سبيل المثال:


g++ -O3 –g example.c –o ex 

الخطوة الثانية هي الركض من مجموعة:


 $pathToSunStudio/collect ./ex 

كنتيجة لعمل البروفايل ، يتم إنشاء دليل فرعي لاختبار التجربة. يتم إنشاء N.er في الدليل الحالي ، حيث N هو رقم البداية. (مهم: إذا تمت مقاطعة البرنامج ، فسيتم كسر دليل التجربة).


الخطوة الأكثر متعة هي إطلاق واجهة المستخدم الرسومية:


 $pathToSunStudio/analyzer test.1.er 

في حالة مثالنا البسيط ، سنتعرف على الكود مباشرةً من محلل واجهة المستخدم الرسومية. مثالنا يحسب مجموع اللوغاريتمات الطبيعية والعشرية للأعداد الصحيحة من 2 إلى 2000000. يتم تمييز الخطوط "الدافئة" باللون الأصفر.



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



كما هو متوقع ، يمكنك التجول حول مكدس الاتصال. في مثالنا البسيط ، نرى أنه في t1 () لقد أتينا من main () ، وتستغرق الدالة sumlog () نصف وقت تنفيذ البرنامج بأكمله.



من الملائم جدًا للتشغيل الآلي أنه من الممكن سحب البيانات باستخدام سطر الأوامر. على سبيل المثال:


 er_print -functions test.1.er test.2.er 

يطبع وقت تشغيل الوظائف من بداية اثنين.


الجدول مع مرات
 <p>Functions sorted by metric: Exclusive Total CPU Time Excl. Incl. Name Total Total CPU sec. CPU sec. 4.160 4.160 Total 3.140 3.140 __ieee754_log 0.330 1.990 __ieee754_log10 0.270 1.880 sumlog(int) 0.180 2.280 sumlog10(int) 0.100 1.610 log 0.090 2.100 log10 0.050 0.050 isnan</p> <ol> <li>4.160 __libc_start_main</li> <li>4.160 main</li> <li>1.880 t1(int)</li> <li>2.280 t2(int) 


Lifehack. بالنظر بعناية إلى الرسم البياني لمكالمات البرنامج ، يمكنك معرفة الكثير من العمل المفيد وبنية قاعدة كود جديدة لك. غالبًا ما أبدأ العمل مع مشروع جديد من خلال إطلاق "محلل الأداء" ، لأنه يمكنك على الفور فهم الكود الذي يتم تشغيله فعليًا وفي أي سيناريوهات.


استنتاج


Sun / Oracle Studion Performance Analyzer هو أداة قوية ومريحة. في الملاحظة ، أظهرت حالة الاستخدام البسيطة ، وبالطبع ، يمكن لمحلل الأداء أن يفعل الكثير. إذا كنت مهتمًا بمعرفة المزيد ، فراجع الوثائق [2]. الاستنتاج الرئيسي: هذه الأداة موجودة ويمكن أن تكون ذات فائدة كبيرة لمشاريعك.


المراجع:


  1. أوراكل المطور ستوديو
  2. Oracle Developer Studio 12.6: محلل الأداء
  3. محلل الأداء

Source: https://habr.com/ru/post/ar469409/


All Articles