Saturday, February 10, 2007

تحسين اداء التطبيق 2


بسم الله الرحمن الرحيم

أهلا بكم أخوانى , أتمنى أن تكون قد أستفدتم من الجزاء الأول ,
و الان لنكمل ما بدأن , لمن يحب المتابعه و التحضير فكما ذكرت أن مصدر الأساسي بالنسبة لى فى هذا الموضوع هو كتاب
Vtune Performance Analyzer
و الأن لنكمل ما بدأنا , أولا هناك سؤال ورد فى الجزء الأول , للأسف السؤال تم وضعه على منتدى الفريق العربي و المنتدى حاليا مغلق, لذا أرجوا منكم ان تضعوا أسألتكم هنا حتى يتكامل الموضوع بشكل كامل هنا

و الأن لنكمل , سوف نبدأ الان يذكر حالات حدثة من قبل و هذا مفيد لنا حيث أننا سوف نتعلم من أخطأ غيرنا

- مشاكل متوقعه:
فى لبعه تفاعليه "السرعه أقل من ما يجب عليه",قرر فريق التطوير أستعمال في-توين قبل البدأ فى تعديل أى جزء من اللعبه , بعد أن قام الفريق باستعمال الأدوات الخاصة بتحليل الأداء توصل الفريق الى أن المشكلة ليست فى الكود الخاص بهم و أنما المشكلة فى سواقة تريف كار ت الشاشة (VGA Driver) و المشكلة التى تم أكتشافها هى أن هناك مشكلة فى سواقة حيث انها يحدث خطأ ما يؤدي الى أستهلاك السواقة 15% من وقت النظام بينما كان متوقع أن يستهلك فقط 3% , "هل أنت مدرك أنه بسبب خطأ غيرك كان من الممكن تمضي أيام كثيرة تحل فى مشكلة ليست موجودة" , تم اكتشف المشكلة بادوات تحليل الأداء,
الأستعمال الدوري لأدوات التحليل : نخرج من هذه القصة بشئ صغير جدا "أمن و لا تخون" , هنا بكل بساطة أذا لم يستعمل فريق ادوات تحليل الاداء كان من الممكن ان يضيع الكثير من الوقت فى البحث عن مشكله ليست موجودة , نلاحظ أيضا أن معظم اعملنا تعتمد على أعمال غيرنا لذا "لا تثق فى أن المنصة التى تعمل عليه لا تحتوى على مشاكل",

التحليل الدوري:
أحد أعضاء الفريق , يقوم بشكل دوري "أسبوعياً" بعمل تحليل للأداء , أستخراج بعض التقارير, و من ثما يضع نتائج التقرير فى ملف Excel , يقوم مدير المشروع أيضا بشكل دوري , بمتابعة خط السير المشروع "من ناحية الأداء" و أذا لاحظ المدير خلال فى الأداء يقوم مدير المشروع بأعطاء تعليمات بأعادة العمل فى الأجزاء التى تأثر أدائها.
الوقاية خير من العلاج : فى هذا المثال نجد أن مدير المشروع أدرك أن هناك بعض المشاكل فى الادء و التى من الممكن أن تؤثر على سير المشروع "من ناحية الاداء" , من الممكن أن يؤثر سلباً أن يكون التطبيق بها مشاكل فى الأداء و السرعه"هذا التأثير السلبي يكون طبعا على مستخدم التطبيق", لذلك عندما لاحظ المدير أن هناك مشكلة أستطاع بسرعه حلها و بدون مشاكل, تخيل لو أن هذا المدير لم يقم بعمل هذا التقرير الدوري, كان سوف ينتهي الأمر بحدوث مشكلة كبيره فى وقت متأخر من المشروع مما يوأدي الى أستهلاك أكبر للموارد, لحل المشكلة.

نقل تطبيق من نظام تشغيل الى أخر أو تحويل تطبيق من لفه الى لفه أخرى Porting
من منا لم يواجه شئ مشابه, كلنا نقوم بهذا العمل بأستمرار,تخيل انك قمت ببناء تطبيق مبني على لغة السي بلس بلس, و ان هذا التطبيق مطلوب أن يعمل على أحد الأجهزة و التى تدعم الجافا, محاولة ترجمة المشروع بنفس اللغه على هذا الجهاز سوف تحتاج تكلفه أكبر من تحويل المشروع كله الى جافا, هنا تأتى المشكلة , عندما تقوم بتحويل مشروع من لغه الى أخرى أو نقل مشروع من نظام تشغيل الى أخر تجد أن الموضوع يؤدي فى النهاية الى بعض المشاكل, و لكن مع وجود أدوات لتحليل الأداء لن يكون هناك أى مشاكل , حيث أنك بكل بساطة سوف تقوم بشكل دائما بعمل قياس و تحليل للأداء بشكل مستمر و مقارنة النتائج , مما سوف يعطيك أستنتاج جيد و مفيد فى عملية تحويل التطبيق و التى سوف تسرع عملية التحويل حيث أنك سوف تعرف بسهوله أين مشاكل التحويل و تقوم بحلها بشكل مباشر

مشاكل الأدخال و الأخراج :
أى تطبيق عملى أو حتى ترفيهي سوف يحتاج الى مدخلاج و ينتج مخرجات , المهم بالنسبة لنا هنا هو عملية الادخال و الأخراج بالنسبة للملفات و التعامل مع الشبكة و أى وسيط تخزين , ادوات تحليل الادء سوف تعطيك مفتاح مهم جدا و مفيد حيث أنه سوف يتم بكل بساطه معرفة أماكن أختناقات القرأة و الكتابه بالنسبة للوسائط التى تم ذكرها , و سوف يستلزم هنا لحل المشكلة أن يكون هناك تعديل فى تصميم الكود , و هو أن يقوم المطور بتعديل الكود بحيث يقلل من عملية القرأة "reading acces time" لان هناك وقت يستهلك فى عملية القرأة و أذا تم تقليل عدد مرات القراة سوف يؤدي ذلك الى توفير الكثير من الوقت,

البيانات الغير منسقه Misaligned Data :
فى أحد التطبيقات و أثناء عمل أختبارات على أحد التطبيقات لوحظ أن هناك تأخر كبير فى بعض مناطق فى التطبيق, قام فريق التطوير بأستعمال أدوات تحليل الاداء, أكتشف الفريق أنه فى بعض الحالات تظهر بيانات غير منسقة , بتعديل بسيط لا يتجاوز بضع سطور من الكود تحسن أداء التطبيق بشكل ملحوظ جدا, هنا يظهر أن هناك بعض المشاكل و التى شبه مستحيل أن يتم العثور عليها بالطرق التقليدية , هناك بعض الطرق و لكن هذه الطرق سوف تؤدي الى أستهلاك الكثير من الوقت ,


الأن على ما أظن أن الجميع قد أستطاع أن يكون صورة لما يمكن أن نستفيد به من أدوات تحليل الأداء و اهمية مثل هذه الادوات,

و الأن لنرى كيفية أكتشاف الأختناقات فى التطبيق؟
- عليك تحديد هدف "مثلاً: شوف يعمل التطيبق أسرع 20% من ما هو عليه"
- راقب و أجمع بيانات عن الأداء بدون VTune
- راقب و أجمع بيانات عن الأداء باستخدام VTune
- فكر فيما قمت بتجميعه , قم بوضع "نموذج فرضية"
- تخيل أختبار لفرضيتك و قم بتصميم أختبار لتطبيقك يحقق أهدافك "مثلاً: تغطية كل ما يتعلق بالتخزين فى التطبيق"
- قم بأعادة ما سبق ما عدا الخطورة رقم واحد الى أن تصل ما ترغبه

أيجاد الأختناقات سهل و لكن كما نرى يتطلب بعض الأجراء و التى تقوم بعمل حدود واضحة للتطبيق و أداءاه, و كما لحظنا انك تقوم بفرض فرضية معينه و التى تقودك الى تغيير مهم يؤثر فى أداء تطبيقك, أستعمال VTune يزيد من امكانية فرض فرضيات قريبة من الحقيقة, كما نعلم أن "تحليل" يأتي بعدها أستنتاج هذا ما نحن ندور حولة , نخمن و نستنج بعض المشاكل ثم نبحث عن دليل أثبات أن هناك مشكلة ثم نقوم بحل هذه المشكلة , يوسع VTune دائرة الفرضيه و ال أمكانية أكبر فى أختبار تعود بنتيجة أفضل, يأتي Vtune بأمكانيات ممتازة "معقده الى حد ما :D" هذه الادوات و الأمكانيات تساعدك على عمل تحليل أداء لتطبيقاتك بشكل محترف و فيما يلي ما يحتوية Vtune من أدوات :
- التوقيت Timeing
- شبكة النداءات "تنشاء تلقائياً مع بدأ الأختبار" Call Graph
- قياسات من العدادات الداخلية الموجودة فى البنية الداخلية للمعالج
- وثائق شاملة و جامعه لكيفية أستعمال أداوات التحليل بالأضافة الى نصائح عامه فى تحسين الأداء
- الاشتمال على خاصية النُصح و الأرشاد Tuning Assistant

الخبرات المطلوبه لأستعمال مثل هذه الأدوات
خبرتك فى فى أنظمة الألى حتماً سوف تؤثر فى كيفية أستخدامك للأداة , المبتدأ و الخبير فى التعامل مع الأداة لن يختلف كثيرا , مهما كانت خبرتك سوف تلاحظ أن Vtune يقودك الى التركيز على المشاكل و يقودك أيضا الى تركيز الوقت بحيث يعطك القدرة أن تقوم بعمل شئ فى وقت قليل,

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

و الأن لنبدأ مع الأدوات,
يحتوي VTune على اربع ادوات و التى تمثل أربع مذاهب لتجميع البيانات حول أداء التطبيق , للعلم كل اداة من الادوات الأربعه مختلفه كليا عن غيرها و لكن كل الأدوات مكلملة لبعضه حيث انها سوف تعطيك فى النهاية تقارير و معلومات مهمه تساعدك فى حل مشاكل الأداء فى تطبيقك, الأدوات كالأتي:
- Sampling
- Call Graph
- Counter Monitor
- Tunning Assistant
بعد أن تتعرف على الادوات التى سبق ذكرها سوف تقوم بعمل ما يشبه خلطة من أستخدام الأدوات, بمعنى أنك سوف تقوم بأستعمال هذه الادوات بشكل مختلف عن غيرك للحصول على نتائج معينه تفيدك في تحليل مشاكل أداء بشكل معينز


اتمنى ان أكون قد أفدتكم,

أن شاء الله نكمل قريبا ,

3 comments:

Anonymous said...

مقاله من العيار الثقيل بحد تسلم أيدك يا احمد

Anonymous said...

Thanks bro for the clarification of my question in arabteam forum..

khaled :)

Anonymous said...

thanks