معمارية البرمجيات / التطور: السعة والانتقال والتحقق والمراجعة / الدرس 13
حلّل الأداء قبل تغيير طوبولوجيا النظام
اربط مسارات الزمن والتوازي وكثرة الإدخال والإخراج والتشبع والأدلة المحددة بالحمل.
في هذه الصفحة
أهداف الدرس
- ابن نموذجا محدودا للزمن أو التوازي واذكر افتراضاته.
- اختر تحقيقا يميز عنق الزجاجة من العرض.
تتبّع المسار الحرج بدلا من عد الأجهزة
قد ينتظر الطلب في القبول والشيفرة والقاعدة والمزود ونقل الرد. تتجمع فترات الانتظار المتتابعة في المسار الحرج، ويسهم التوازي وفق اعتمادياته وشرط إتمامه. لا تزيل النسخ الإضافية استدعاء خارجيا مسلسلا أو حلقة استعلام لكل صف. ارسم عملية ممثلة وحدّد مكان قياس الزمن. ميّز الحساب من الانتظار والطوابير. قد يهم رسم الاستخدام العالي لكنه لا يحدد مسار المستخدم البطيء أو سببه.
استخدم حسابات صغيرة لكشف الافتراضات
يجمع النموذج مراحل متتابعة افتراضية. يساعد على سؤال هل يحسن تحسين العرض المحلي طلبا يهيمن عليه انتظار القاعدة. لا يتوقع ذيل الزمن أو التداخل أو الإعادة أو التنافس. يجب أن يحفظ القياس الواقعي حدود المراحل ويقارن الحمل نفسه قبل التغيير وبعده. لا تجمع مئينات توزيعات مستقلة وتسمّها مئين الطلب الدقيق؛ فالمشاهدات وترابطها مهمان. تفيد النماذج البسيطة لأن نواقصها قابلة للتسمية والاختبار.
stages_ms = {"admission": 20, "application": 10, "database": 120, "encoding": 5}
total = sum(stages_ms.values())
print(f"sequential_total_ms={total}")
print(f"without_encoding_ms={total - stages_ms["encoding"]}")
sequential_total_ms=155
without_encoding_ms=150
تجمع المراحل 155 ms. حذف الترميز ذي الخمس يبقي 150 ms، فلا يعالج معظم الزمن في هذا النموذج.
قلّل الرحلات غير اللازمة قبل زيادة السعة
قد تنشئ قائمة تسترجع المنظم لكل صف استدعاءات كثيرة. وقد يقلل ربط محدود أو جلب دفعي أو إسقاط مناسب الرحلات، لكن كل خيار يغير الحجم وافتراضات الاتساق. قارن الخطط والبيانات الممثلة معزولا ولا تدّع تفوق الدفعات دائما. تجنب استبدال الاستدعاءات الصغيرة بتصدير غير محدود يستنفد الذاكرة. المطلوب عمل محدود لكل طلب مع صفحات أو عقد حجم صريح عند نمو البيانات.
اربط الإنتاجية والزمن والعمل الجاري
تربط علاقة ليتل، ضمن الاستقرار وحدود قياس متسقة، متوسط العمل الجاري بمتوسط الإنتاجية مضروبا بمتوسط الزمن في النظام. يجب توحيد الوحدات. يستخدم المثال طلبين مكتملين في الثانية ونصف ثانية زمنا متوسطا، فينتج طلب جار واحد وسطيا. ليست قاعدة لتحديد الخيوط ولا توقع حالة مستقرة لطابور ينمو بلا نهاية. وتظل التقلبات والهامش والذاكرة وحدود الاعتمادية بحاجة إلى دليل.
throughput_per_second = 2
average_seconds_in_system = 0.5
average_in_progress = throughput_per_second * average_seconds_in_system
print(f"average_in_progress={average_in_progress:.1f}")
print("assumption: stable system and matching boundaries")
average_in_progress=1.0
assumption: stable system and matching boundaries
الناتج 1.0 طلب جار متوسطا وفق الافتراضات. لا يولد حملا ولا يختار إعدادات تواز تشغيلية.
غيّر العامل الذي تشير إليه الأدلة
صغ فرضية مثل هيمنة استعلامات المنظم المكررة، وقارن بديلا محدودا بالبيانات والطريقة المعزولتين نفسيهما. سجّل الأخطاء والصحة والذاكرة والذيل مع الإنتاجية؛ فالنتيجة الخاطئة الأسرع ليست تحسينا. توقف عند حدود المختبر الآمنة. لا يشمل الدرس حمل الإنتاج أو ضبط القواعد أو تغيير البنية. اذكر الحسابات المنفذة فقط وصِف تجارب النشر عملا مقترحا يحتاج بيئته المخولة.
الأخطاء الشائعة وإصلاحها
تضاف نسخ وتبقى القاعدة المشتركة مشبعة.
- لماذا يحدث؟
- عومل العرض كموضع السعة.
- كيف تصلحه؟
- تتبّع الطلب وحدّد المورد المشترك المقيد.
- كيف تتجنب تكراره؟
- قارن زمن المراحل والتشبع قبل تغيير الطوبولوجيا.
تجمع قيم p95 للمراحل كمئين دقيق للطلب.
- لماذا يحدث؟
- أُهمل ترابط التوزيع.
- كيف تصلحه؟
- قِس الطلب كاملا أو احفظ أثره المشترك.
- كيف تتجنب تكراره؟
- اذكر هل النتيجة نموذج أم حد أم مشاهدة.
يعيد استعلام دفعي بيانات غير محدودة.
- لماذا يحدث؟
- تجاهل تقليل الرحلات الذاكرة وحدود الرد.
- كيف تصلحه؟
- أضف عقدا لحجم النتيجة والصفحات.
- كيف تتجنب تكراره؟
- اختبر مدخلات مختبرية كبيرة ممثلة مع الصغيرة.
اختبر فهمك
1. تستهلك مرحلة 2 ms من طلب 500 ms. ماذا يجب أن يقر اقتراح تنصيفها؟
اعرض الحل المشروح
في الشروط المتتابعة نفسها يوفر نحو 1 ms ويبقي 499 ms. قد يخدم هدفا آخر لكنه لا يفسر تحسنا كبيرا وحده. افحص المراحل المهيمنة والتداخل قبل الأولوية، واحفظ العملية وحدود القياس في المقارنة.
2. لماذا لا يحدد متوسط العمل الجاري أقصى عدد آمن للعاملين؟
اعرض الحل المشروح
يلخص تدفقا مستقرا مفترضا أو مرصودا، لا الذروة والذاكرة والتنافس وحصص الخارج والفشل. تحتاج الحدود هذه القيود وقياسات مضبوطة. تكشف العلاقة تناقض الوحدات أو الخطط غير المعقولة دون أن تكفي لإعداد السعة.
أهم ما تعلمته
- يبدأ تحليل الأداء بمسار وحمل وحد قياس.
- تكشف النماذج الصغيرة الافتراضات وتختبرها الأدلة المعزولة.