سؤال

أحتاج إلى تحسين إنتاجية النظام.

تم إجراء الدورة المعتادة للتحسين وقد حققنا بالفعل 1.5X إنتاجية أفضل.

لقد بدأت الآن أتساءل عما إذا كان بإمكاني الاستفادة من إخراج Cachegrind لتحسين إنتاجية النظام.

هل يستطيع شخص ما أن يشيرني إلى كيفية البدء في هذا؟

ما أفهمه هو أننا نحتاج إلى ضمان أن يتم الاحتفاظ بالبيانات الأكثر استخداما صغيرة بما يكفي بحيث لا يزال في ذاكرة التخزين المؤقت L1 وينبغي أن تناسب المجموعة التالية من البيانات في L2.

هل هذا الاتجاه الصحيح أتناوله؟

هل كانت مفيدة؟

المحلول

صحيح أن إخراج cachegrind في حد ذاته لا يمنح الكثير من المعلومات كيفية الذهاب حول تحسين التعليمات البرمجية. يحتاج المرء إلى معرفة كيفية تفسير ذلك وما تقوله حول تركيب البيانات في L1 و L2 هو في الواقع الاتجاه الصحيح.

لفهم تماما كيف تؤثر أنماط الوصول في الذاكرة على الأداء، أوصي بقراءة ورقة ممتازة "ما يجب أن يعرفه كل مبرمج عن الذاكرة" بواسطة Ulrich Driepper، The GNU Libc Prienter.

نصائح أخرى

إذا كنت تواجه مشكلة في تحليل إخراج cachegrind، فنتطلع إلى kcachegrind (يجب أن تكون متاحة في توزيعة الاختيار). أنا استخدمها وتجد أنها مفيدة للغاية.

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

باختصار، يمكن أن يخبرك cachegrind حيث توجد بعض الاختناقات في التعليمات البرمجية الخاصة بك، لكن لا يمكن أن أقول لك كيفية إصلاحها. عليك أن تعمل ذلك بنفسك. ولكن على الأقل لديك المعلومات!

1.5x هو تسريع لطيف. هذا يعني أنك وجدت شيئا استغرق 33٪ من الوقت الذي يمكنك التخلص منه. أراهن أنك تستطيع أن تفعل المزيد، حتى قبل أن تنزل إلى مشكلات منخفضة المستوى مثل ذاكرة التخزين المؤقت لذاكرة البيانات. هذا مثال على كيفية. في الأساس، يمكن أن يكون لديك مشاكل في الأداء الإضافية (والفرص للسرعة) التي لم تكن كبيرة من قبل، مثل 25٪ يقولون. حسنا، مع تسريع 1.5x، فإن 25٪ الآن 37.5٪، لذلك "يستحق أكثر" مما كان عليه. غالبا ما تكون هذه المشكلة في شكل مكالمة وظيفة من منتصف المكدس التي تطلب العمل، بمجرد معرفة مقدار تكاليف تكنولوجيا المعلومات، قد تقرر غير ضرورية تماما. نظرا لأن KCACHEGRIND لا تحدد هذه حقا، فقد لا تدرك أنها مشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top