ما هي النصيحة التي يمكن أن تعطي لي للكتابة معنى المعيار?

StackOverflow https://stackoverflow.com/questions/324200

  •  11-07-2019
  •  | 
  •  

سؤال

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

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

فكرتي ببساطة تبدأ بالتسلسل كل وحدة مع حسن اختيار مجموعة من البيانات المدخلة.

هل لديك أي نصيحة ؟ أي ملاحظات على هذه البسيطة الإجراء ؟

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

المحلول

سؤالك واسع جدا ، لذلك للأسف جوابي لن تكون محددة جدا أيضا.

أولا المقارنة صعبة.لا نقلل من الجهد اللازم لإنتاج معنى للتكرار ، عالية الثقة في النتائج.

ثانيا ، ما هو الأداء الخاص بك الهدف ؟ هو الإنتاجية (المعاملات أو العمليات في الثانية الواحدة)?هو الكمون (الوقت المستغرق لتنفيذ الصفقة)?لا يهمك متوسط الأداء ؟ هل أهتم أسوأ الأحوال الأداء ؟ لا يهمك المطلق أسوأ الأحوال أو يهمني أن 90% أو 95% أو بعض الأخرى المئين الكافية الأداء ؟

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

إذا كنت مهتما في الكمون ، يمكنك إرسال رسائل / المعاملات / المدخلات قياس كم من الوقت يستغرق لمعالجة كل واحد.

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

ثانيا ، لا أقول إن هذه الوحدات ستكون وحدة المعالجة المركزية ملزمة ، I/O bound, إذا كان يمكن الاستفادة من عدة وحدات المعالجة المركزية/النوى ، إلخ.كما كنت في محاولة لتقييم الأجهزة المختلفة حلول قد تجد أن التطبيق الخاص بك فوائد أكثر من رائعة I/O الفرعي مقابلعدد كبير من وحدات المعالجة المركزية.

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

نصائح أخرى

والمؤشر الأكثر وضوحا هو قياس كيفية تنفيذ التعليمات البرمجية تحت الاستخدام اليومي. والتي تقدم واضح لكم مع أرقام أكثر واقعية.

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

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

وأخيرا، والنظر في توفير مجموعات البيانات واستخدامها لبالمثل تقييم أي تغييرات لاحقة تجريها على البرنامج.

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

من وجهة نظر المكسرات والبراغي وجهة نظر، لقد استعملت بيرل ولها وحدة المعيار لجمع المعلومات يهمني.

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

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

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

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

  1. الوظائف التي غالبا ما تستخدم ؟
  2. مقدار البيانات التي يتم نقلها ؟
  3. لا تفترض أي شيء.إذا كنت تعتقد أن "هذا هو الذهاب إلى أن تكون سريعة/بطيئة" لا أراهن على ذلك.في 9 من أصل 10 حالات ، كنت على خطأ.

إنشاء العشرة الأوائل 1+2 و العمل من ذلك.

أنه قال:إذا كنت استبدال الأجهزة القديمة مع الأجهزة الجديدة ، يمكنك أن تتوقع ما يقرب من 10 ٪ أسرع التنفيذ لكل سنة من السنوات التي مرت منذ أن اشتريت المجموعة الأولى (إذا كان النظم وإلا جميلة على قدم المساواة).

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

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

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

وMicrobenchmarking

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

تأكد الكثير من القياسات وحساب بعض الإحصاءات. متوسط، متوسط، الانحراف المعياري، مؤامرة مخطط. ننظر إليها وانظر كم يتغير. الأشياء التي يمكن أن تؤثر على نتيجة تشمل GC توقف في VM، رفع التردد على وحدة المعالجة المركزية، قد تبدأ عملية أخرى بعض المهام الخلفية (مثل مسح الفيروسات)، ونظام التشغيل قد تقرر تحريك عملية على حدة المعالجة المركزية الأساسية مختلفة، إذا كنت <لأ href = "https://access.redhat.com/solutions/48756" يختلط = "نوفولو"> لدينا بنية NUMA ، فإن النتائج ستكون اكثر وضوحا.

في حالة microbenchmarks، كل هذا يمثل مشكلة. قتل ما بمعالجة يمكنك قبل أن تبدأ. استخدام مكتبة المقارنة التي يمكن أن تفعل بعض من ذلك بالنسبة لك. مثل https://github.com/google/caliper ومثل هذه.

ونظام القياس

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

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

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