الأداء هو أحد الخصائص الرئيسية للبرمجيات الجيدة ؛ لن يتم تقدير الخصائص الأخرى لأنظمة التخزين إذا كانت بطيئة أو غير مستقرة. اليوم نتحدث مع سيرجي كاتشكين كاتشيني- رئيس قسم الخبرة الفنية بقسم البحوث التطبيقية والخبرة الفنية في YADRO.
لمهنته عدة أسماء: محلل أداء ، مهندس أداء ، مختبر أداء. وكلهم نادرون جدًا في روسيا. وفي الوقت نفسه ، تساعد هندسة الأداء في إنشاء أنظمة كمبيوتر فعالة تعمل بسرعة وبشكل موثوق. وتتمثل مهمته في دراسة سبب عدم عمل النظام كما نرغب ، لفهم أسباب البطء أو عدم التطابق مع معايير العمل المستهدفة ، وتحديد مجالات المشاكل والعثور عليها ، للمساعدة في القضاء عليها.
تحدث سيرجي كاشكين عن اكتشاف الاختناقات في حزمة البرامج وتحسين أداء التخزين ، حول ما يفعله فريقه.
سيرجي ، كيف أتيت إلى YADRO؟ هل سبق لك تجربة OpenPOWER؟
قبل ذلك ، عملت لدى مورد آخر ، وشاركت في دعم إصدار خاص من نظام التشغيل UNIX OS على معالجات IA64 (يجب عدم الخلط بينها وبين x86) من حيث أداء النواة. هندسة EPIC ليست مثل RISC ، فهي مختلفة تمامًا. إذن هذه هي تجربتي الأولى في العمل مع OpenPOWER في YADRO ، واستغرقت إعادة البناء بعض الوقت. لكن فكرة OpenPOWER ، على الرغم من بعض التبسيط ، هي نفسها ، لذلك يمكن إتقان كل شيء.
ماذا يفعل مهندسو الأداء؟ ما هي الأساليب المستخدمة في العمل؟ هل يصعب عليك تعيين موظفين جدد؟
التخصص الرئيسي لفريقنا هو هندسة الأداء أو هندسة الأداء. إنه نظام منفصل يهدف إلى ضمان أن الحل الذي يتم تطويره يلبي المتطلبات غير الوظيفية ، ولا سيما الأداء. يتضمن مجموعة من الممارسات والمعرفة والأساليب والتقنيات التي يمكن تطبيقها في مراحل مختلفة من تطوير البرمجيات: الإعدادية والبرمجة والاختبار وتشغيل النظام.
في روسيا ، هذا الانضباط ليس واسع الانتشار ، على الأقل ، يتم إنشاء مثل هذا الانطباع من خلال نتائج البحث عن الموظفين. ومع ذلك ، في العالم ، هذا اتجاه ثابت. نادرًا ما يتضمن تخصص تكنولوجيا المعلومات هذا الترميز المباشر. نحن نبرمج قليلاً ، وفي الواقع ، لا نعرف كيف نفعل ذلك مثل المبرمجين المحترفين. يتطلب هذا مهارات محددة لتحديد مواقع "النقاط الفعالة" في البرنامج والتي تؤثر على المتطلبات غير الوظيفية. من ناحية ، يساعد في إنشاء منتج يلبي المتطلبات ، ومن ناحية أخرى ، يمنع تكلفة المزيد من التحسين أو إعادة العمل.
كيف يمكنك ضمان مراقبة الجودة وتحديد الاختناق في حزمة البرامج؟
يمكن تقسيم الطرق إلى نوعين. الأول هو النهج المركزي للنظام. إنها موجهة نحو الموارد: نقوم بتحليل عبء مكونات النظام الفردية ، وبناءً على النتائج التي تم الحصول عليها ، نقوم بافتراض حيث يوجد عنق الزجاجة.
والثاني هو النهج المركزي للتطبيق ، عندما يكون موضوع البحث هو التطبيق بأكمله أو العمليات الفردية في Linux. نحن ننظر إلى ما يقوم به التطبيق ، وما هو العمل الذي يقوم به. هل هذا العمل مفيد ، أم أنه يقوم بشيء عديم الفائدة ، أي إضاعة الوقت. إذا كان التطبيق ينتظر ، فإننا نرى ما ينتظره. عادة ما تكون هذه موارد الأجهزة أو البرامج ، وآليات المزامنة.
في الحياة الواقعية ، عليك التبديل بين هذه الأساليب. من ناحية أخرى ، ننظر إلى الموارد: هل هناك أي مشاكل أو أخطاء واضحة. نستخلص النتائج. ثم ننظر إلى التطبيق: كيف يبدو الأمر. في هذه الحالة ، يكون التطبيق هو رمز نظام التخزين أو أي شيء آخر هو موضوع التحسين.
كيف نفهم أن التخزين يعمل "عند الحد الأقصى"؟ كيف يمكنك معرفة ما إذا كانت إنتاجيتك قد استنفدت؟ ما هي المعلمات التي تشير إلى هذا؟ ما هي المقاييس الرئيسية المستخدمة لقياس أداء التخزين؟
تتوفر عدة مقاييس للمستخدم العادي. العامل الرئيسي هو وقت الاستجابة. قيمته المطلقة مهمة. بالإضافة إلى وقت الاستجابة ، فإن النطاق الترددي مهم أيضًا. إذا بدأ وقت الاستجابة في النمو مع زيادة الحمل ، بينما لا يزداد IOPS وكمية البيانات المنقولة ، فهذا يعني أن بعض موارد التخزين قريبة من التشبع. كما تعلم ، يعمل نظام التخزين بالسرعة التي يمكن أن يعمل بها أبطأ موارده.
في الوقت نفسه ، يمكن أن تكون التطبيقات المختلفة بالغة الأهمية إما في وقت الاستجابة أو في عرض النطاق الترددي. على سبيل المثال ، إذا كنا نتحدث عن قاعدة بيانات ، فعادةً ما يكون هذا هو الوصول العشوائي في كتل صغيرة ، والكثير من القراءات ، وهو مهم بالنسبة لأداء IOPS والحد الأدنى من وقت الاستجابة. بالنسبة للأحمال الأخرى مثل البث للنسخ الاحتياطية أو التسجيل من كاميرات الفيديو أو إنترنت الأشياء ، فإن النطاق الترددي هو الأهم ، والقدرة على تسجيل دفق بيانات كبير.
هل تم تحسين نظام التخزين لمهمة معينة ، أم أنه تم إنشاؤه كحل عالمي؟
لفترة طويلة ، كانت أنظمة التخزين ، على الأقل للأغراض العامة ، متعددة الاستخدامات. لم يتم "شحذها" لأي حمل معين ومحاولة "إرضاء" التطبيقات الأكثر شيوعًا. بعد كل شيء ، من المعروف تقريبًا ما هو ملف تعريف التحميل لقاعدة البيانات ونظام النسخ الاحتياطي والمراقبة بالفيديو وما إلى ذلك. يجب أن يستجيب نظام التخزين بشكل مناسب لمثل هذه الأحمال دون أي تكوين إضافي.
لذلك ، تم تصميم أنظمة التخزين للأغراض العامة من الألف إلى الياء لتناسب المهام الأكثر شيوعًا. لهذا ، يتم استخدام الاختبارات التركيبية مع مجموعة من الملفات الشخصية "الحرجة" التي تحاكي موقفًا حقيقيًا. تعمل معظم الوقت ، لكن الواقع دائمًا ما يكون أكثر تعقيدًا.
تم تصميم الأحمال الحقيقية بواسطة مواد تركيبية تقريبًا. يعد هذا عمومًا منطقة علمية مكثفة ، لأنه بالإضافة إلى IOPS وعرض النطاق الترددي وحجم الكتلة ونسبة عمليات القراءة / الكتابة ، فإن الحمل له خصائص أكثر بكثير. هذا هو توطين بقعة البيانات على القرص ، ووجود "المناطق الساخنة" ، وتوزيع الطلبات في الوقت المناسب ، وتوحيد وصولها. لذلك ، من المحتمل ألا يقع حمل معين k في أي من ملفات التعريف. ربما بسبب ميزات البرنامج أو تفاصيل مهمة العمل نفسها. في هذه الحالة ، تحتاج إلى تكوين النظام لمهام محددة.
افحص التطبيق ، كيف يعمل. وقد يكون من الضروري تغيير تشغيل التطبيق أو إعدادات التخزين. في بعض الأحيان يكون حل المشكلات من جانب التطبيق أسهل بكثير من التخصيص بدلاً من تغيير نظام التخزين.
هل تم تكوين النظام تلقائيًا للمهمة؟ هل تحتاج إلى ذكاء اصطناعي لهذا؟ هل يمكن للمسؤول أو المستخدم اختيار ملف التحميل بنفسه؟
تقوم أنظمة التخزين بذلك تلقائيًا لفترة طويلة - لم يتم تحميل المسؤول بهذه المهمة. عادة ما يحاولون تحقيق ذلك دون استخدام الذكاء الاصطناعي - الخوارزميات التقليدية. ومع ذلك ، فإن الذكاء الاصطناعي لديه إمكانات كبيرة. إذا كان يسمح لك بالتنبؤ بأي كتل من البيانات وفي أي وقت يمكن للتطبيق أن يطلبه ، فيمكنك الاستعداد لذلك مسبقًا.
إذا كانت خوارزميات التحسين السابقة بسيطة جدًا ، مثل القراءة المسبقة ، أي عند قراءة البيانات بشكل متسلسل ، يقوم النظام بتحميل البيانات في ذاكرة التخزين المؤقت مسبقًا ، أو على العكس من ذلك ، حرر ذاكرة التخزين المؤقت للبيانات الأخرى ، فإن الاحتمالات تتوسع الآن: سيكون النظام قادرًا على الاستعداد لذروة الطلبات أو تنظيمها بشكل معقد " نقطة بيانات ساخنة ".
ماذا يجب أن يكون مقياس تحسين التخزين؟ هل يشمل أيضًا برامج / أجهزة الخادم والبنية التحتية (SAN)؟ هل يتطلب تكاملًا وثيقًا بين مكدسات البرامج والأجهزة؟
من وجهة نظر هندسة الأداء ، يعتبر النظام ككل ، في مجمع ، أي التطبيق ، المضيف (الخادم) ، البنية التحتية للتخزين ، (SAN) ، التخزين. من المهم فهم كيفية عمل التطبيق ، لأنه يولد الطلبات إلى نظام التخزين. كل هذا ، بالطبع ، يؤخذ في الاعتبار ويستخدم.
يُعتقد أن الخيار الأمثل لاستخدام محركات الأقراص من أنواع مختلفة في أنظمة التخزين هو تخزين البيانات المتدرج. هل يمكن اعتبار التمزيق وسيلة لزيادة أداء التخزين؟
بشكل عام ، يشبه التمزيق التخزين المؤقت - فلديهما عناصر مشتركة. الاختلاف الوحيد هو أنه عند التخزين المؤقت ، يتم تكرار البيانات ، أي أنها موجودة على كل من SSD (في ذاكرة التخزين المؤقت) وعلى القرص ، وعندما يتم تخزين الطبقات في مكان واحد فقط. بمعنى ، إذا كان التخزين المؤقت هو وسيلة لتحسين الأداء ، فيمكن أيضًا اعتبار التمزيق طريقة تحسين.
أين ترى مزايا / عيوب التخزين المعرّف بالبرمجيات (SDS) من حيث تحليل الأداء وتحسين النظام؟ ربما هذه حلول أبسط وأكثر مرونة؟
في الواقع ، العكس تماما. SDS هو نظام موزع يتكون من العديد من الخوادم التي تتفاعل مع بعضها البعض. إذا تم استخدام أنظمة تشغيل خاصة ، نوعًا ما من أنظمة الملفات ، فهذا يضيف أيضًا تعقيدًا. من وجهة نظر هندسية ، هذا أكثر صعوبة ، لكنه أكثر إثارة للاهتمام من بعض النواحي. من ناحية أخرى ، لا تحتوي SDS عادةً على أي متطلبات أداء صارمة ، في حين أن أنظمة التخزين الكلاسيكية أكثر صرامة. لن يُغفر ما يُغفر للأنظمة المعرفة بالبرمجيات للتخزين التقليدي.
يتمثل أحد أهداف الشركة في تطوير منتجات محسّنة للذكاء الاصطناعي وإنترنت الأشياء وشبكات الجيل الخامس. ما مدى صعوبة هذا في رأيك؟ كيف ستبدو هذه المنتجات؟
في الوقت الحالي ، غالبًا ما تُستخدم مخازن الملفات لتخزين البيانات الأولية في الذكاء الاصطناعي ، للتدريب وبناء النماذج - SDS ، أي أنها حلول موزعة دائمًا تقريبًا. في رأيي ، تستخدم العديد من الشركات الآن الذكاء الاصطناعي كنوع من التجربة ، فهم ينظرون إليه ويحاولون فهم كيف يمكن أن يكون مفيدًا. لذلك ، فإن متطلبات الأجهزة ليست صارمة للغاية. إذا نجحت - حسنًا ، لم تنجح - يمكنك الانتظار يومًا أو يومين. نظرًا لأن عمل الذكاء الاصطناعي في الشركات يصبح أكثر أهمية ، تزداد كذلك متطلبات أنظمة الأقراص الفرعية. سنرى حلول تخزين جديدة للذكاء الاصطناعي وإنترنت الأشياء بالفعل مهمة من الدرجة الحرجة.
ما هو الدور الذي تلعبه شراكة YADRO مع شركات التكنولوجيا العالمية في تحسين البرامج؟
من وجهة نظر الفني ، فهي تساعد بالتأكيد. يسهل هذا التعاون تواصل المهندسين مع بعضهم البعض ، ووصولهم إلى المعلومات ، والتطورات الجاهزة ، ولا يتعين عليهم "إعادة اختراع العجلة" في كل مرة.
كيف ترى دور الافتراضية في التخزين؟ هل يساعد في إزالة الاختناقات في البرامج أم العكس؟ وكيف يرتبط أداء النظام والموثوقية؟ هل يمكن الحفاظ على الموثوقية مع زيادة الإنتاجية؟
تضيف المحاكاة الافتراضية التعقيد بالطبع ، لكنها قد تكون مفيدة لعزل وظيفة تخزين عن أخرى. بشكل عام ، هذه تكاليف ومضاعفات إضافية ، لذا يجب النظر إليها بشكل نقدي ، بحذر.
عندما يتعلق الأمر بزيادة الإنتاجية ، فمن السهل بالفعل فقدان الموثوقية على طول الطريق. هذا نوع من الثنائية. على سبيل المثال ، عندما نتحدث عن الخوادم ، بالنسبة لخادم عالي الأداء (HPC) ، عادةً ما تأتي الموثوقية في المرتبة الثانية. تحتاج أنظمة التخزين عمومًا إلى توفير مستوى عالٍ من التوافر والوظائف والأداء أولاً. مع زيادة موثوقية مستوى التكرار ، يصبح النظام أكثر تعقيدًا. يصبح من الضروري مزامنة العناصر. ومع ذلك ، فإن أداء النظام سيتأثر حتما. مهمة التطوير هي تقليل هذا التأثير.
الآن هناك فئات جديدة من الذاكرة ، مثل ذاكرة فئة التخزين ، والذاكرة المستمرة ، ومحركات الأقراص المحمولة يتم تحسينها. كيف يؤثر هذا على بنية النظام؟ هل البرنامج يواكب هذه التغييرات؟
حسنًا ، على الأقل يحاول. بشكل عام ، أدى ظهور الذاكرة السريعة إلى تغيير طريقة عمل مهندسي الأداء في الصناعة بشكل كبير. قبل ظهور محركات أقراص الحالة الثابتة (SSD) ، كانت الغالبية العظمى من مشكلات أداء تكنولوجيا المعلومات مرتبطة بوحدات التخزين I / O. نظرًا لوجود معالجات وأقراص سريعة (HDD) بها عناصر ميكانيكية تكون أبطأ بكثير من المعالج. لذلك ، على حساب الخوارزميات ، كان علينا محاولة تخفيف التأخير من الأقراص البطيئة.
مع ظهور الذاكرة السريعة والخوارزميات يجب أن تتغير. إذا كانت الخوارزمية ثقيلة بدرجة كافية ، فإنها لا تزال مفيدة من قبل ، لأن القرص أبطأ بكثير. إذا تمكنت من إخفاء التأخير في الميكانيكا ، فهذا جيد. مع ظهور محركات أقراص الحالة الثابتة ، يجب أن يعمل البرنامج بشكل مختلف. يجب أن يقدم الحد الأدنى من الكمون للحصول على أقصى سرعة من SSD. وهذا يعني أن الحاجة إلى خوارزميات معقدة تخفي الكمون من الأقراص قد انخفضت. يمكن ترحيل قاعدة بيانات I / O المكثفة الحساسة بشكل خاص لوقت الاستجابة إلى SSD.
هل سيؤدي هذا إلى تغيير بنية التخزين؟ نعم و لا. لأن الأقراص لم تذهب إلى أي مكان. من ناحية أخرى ، يجب أن يكون الرمز قادرًا على العمل مع SSD ، أي أنه يجب أن يكون سريعًا جدًا. من ناحية أخرى ، تستخدم الأقراص الميكانيكية أحمالًا يمكنها تحملها جيدًا ، مثل التدفق. في الوقت نفسه ، زاد حجم الأقراص عدة مرات ، لكن السرعة ظلت كما هي منذ 10 سنوات.