مدونة عمار الخوالده

متى تتجنب استخدام الـ Average لقياس أداء الانظمة

قُصاصة

كثيرا ما يُستخدم المتوسط الحسابي (Average/Mean) عند مراقبة الأنظمة لتجميع القيّم وأخذ فكرة عامة عنها لكنه ليس أنسب عملية لتجميع البيانات دائما فهو لا يعطي صورة دقيقة عن الأداء.

مثال على قياس API Latency

لإعطاء مثال على ذلك، سنفترض أننا نقيس API Latency لأحد الأنظمة، الشكل الآتي يوضح الـ Latency لكل request (بدون أي حسابات إضافية، اعتبر ان كل نقطة على محور x هي request مختلفة):

نلاحظ من الرسم البياني أن الـ Requests متباينة في السرعة، فبعضها سريع جدا والآخر بطيء جدا، وبينهما تقع كثير من البيانات.

لو حسبنا المتوسط بجمع القيم وقسمتها على عددها سنحصل على 696.04ms، الرقم لا يعبر عن مدى بطئ وسرعة الـ API، أعلى قيمة ضمن البيانات السابقة 5231ms تؤثر بشكل كبير على المتوسط وترفعه (فالمتوسط بدونها يصبح 507.08ms)

المتوسط يوضح مركز ثقل البيانات، والـ Percentile أداة أكثر دقة

المتوسط في هذه الحالة يشرح أين “مركز ثقل” الأرقام.. فكلما زاد عدد الـ requests البطيئة سيرتفع الرقم، وكلما قلت سينخفض، عدد قليل من القيم المتطرفة قد يرفع الـ Average بشكل كبير.

الأداة الأنسب لفهم البيانات في مثل هذه الحالة هي الـ Percentile وهي مجموعة من القيم تقع تحتها نسب مئوية معينة من البيانات المرتبة، تتم الاشارة إليها عادة بحرف P متبوعا برقم النسبة المئوية المطلوب، الجدول الآتي يوضح الفكرة:

العملية وصفها قيمتها على بيانات المثال
Average/Mean مجموع القيم على عددها 696.04ms
P50 50% من الأرقام أقل أو تساوي هذا الرقم، و 50% منها ستكون فوقه 421ms
P95 خمسة بالمئة من الأرقام أعلى من هذا الرقم، و 95% منها أقل منه أو تساويه 2168.2ms
P99 واحد بالمئة فقط من الأرقام أعلى من هذا الرقم، باقي الـ 99% تساويه أو تقل عنه 4564.76ms

الـ Percentile تعطيك فكرة أكثر دقة عن البيانات، فقيمة P50 تعطي فكرة عن التجربة الطبيعية للمستخدم، بينما P95 تعطي فكرة عن تجربة معظم المستخدمين، و P99 تعطي فكرة عن الحالات المتطرفة.

فلو أردنا إضافة تنبيه (Alert) عند زيادة الـ Latency، وليكن الحد الفاصل هو 700ms، استخدام الـ Average لن يكون دقيقا أبدا، ففي المثال السابق، الـ Average كان أقل من 700ms مع وجود قيم بطيئة جدا تصل إلى عدة ثوانٍ، بينما استخدام P99 يعني أن التنبيه سيعمل إذا تجاوز 1% من البيانات هذا الرقم، و P95 يتحقق من 5% من الأرقام، مما يعطيك تحكما أكبر وإمكانية لاستثناء القيم المتطرفة التي يصعب التعامل معها بشكل سريع.