تشغيل YJIT الخاص بـ Ruby 3.2 في بيئة الإنتاج في Discourse

في Discourse، كنا حريصين على اعتماد YJIT منذ أن أعلن فريق البنية التحتية لـ Ruby on Rails في Shopify أنه جاهز للإنتاج. بعد مشاهدة نتائج قياسات محلية واعدة، بدأنا في تشغيل تطبيقات Rails الإنتاجية لدينا مع تمكين YJIT الخاص بـ Ruby 3.2 على مجموعات مختارة في أوائل مايو 2023. ثم قضينا بعض الوقت في قياس أدائه في العالم الحقيقي. يسعدنا مشاركة النتائج الإيجابية التي لاحظناها. بناءً على هذه النتائج، قمنا الآن بتمكين YJIT عبر جميع استضافاتنا، ويمكن للمستضيفين الذاتيين اختيار القيام بالشيء نفسه.


هذا موضوع مناقشة مصاحب للمدخل الأصلي على https://blog.discourse.org/2023/05/running-ruby-3-2s-yjit-in-production-at-discourse/
21 إعجابًا

بدأنا في قياس أداء Discourse+YJIT منذ نوفمبر 2022، وبدأنا في تشغيل Meta تحت YJIT بشكل متقطع منذ يناير من هذا العام. YJIT هو أحد الأسباب التي دفعتنا لتسريع الترقية من Ruby 2.7 وصولاً إلى Ruby 3.2 في غضون بضعة أشهر، وأنا سعيد للغاية بوصوله أخيرًا. والأكثر من ذلك، أن التحسينات التي ستصل لـ Ruby 3.3 تبدو أفضل!

14 إعجابًا

تطور لغة روبي مثير للإعجاب حقًا … اعتقدت أن كل المبرمجين الموهوبين يستخدمون بايثون هذه الأيام؟! :sweat_smile:

أحسنت أيها الفريق للحفاظ على مواكبة خارطة طريق روبي.

12 إعجابًا

ربما يكون سؤالاً غبياً، ولكن هل ملف “تعريف الحاوية” هو ملف app.yml؟ لم أسمع به بهذا الاسم من قبل. شكراً!

3 إعجابات

نعم، هذا صحيح. لقد استخدمنا الاسم الطويل حيث قد يقوم بعض الأشخاص بإعادة تسمية أو امتلاك ملفات “app.yml” متعددة.

5 إعجابات

سيكون من المثير للاهتمام جدًا إجراء مقارنة بين Ruby 2.7 و 3.2 مع JIT!

إعجابَين (2)

من ملاحظاتي بتاريخ 4 يناير:

أعدت تشغيله الآن

Ruby Server p categories home topic categories user home user topic user categories admin home admin topic admin
2.7.5 Unicorn 50 34 59 36 82 112 93 67 94 72
3.1.2 Unicorn 50 34 61 36 82 112 91 67 94 70
3.2.0 Unicorn 50 33 59 36 82 111 90 68 92 72
3.2.0 +YJIT Unicorn 50 25 42 29 67 89 77 58 76 56

2.7 إلى 3.2 + YJIT تسريع

Speedup categories home topic categories user home user topic user categories admin home admin topic admin
1.36 1.40 1.24 1.22 1.25 1.20 1.15 1.23 1.28

7 إعجابات

وبدون أي بيانات مقاسة وبناءً على ما يشعر به ويرى مستخدم واحد أو قليلون.

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

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

إعجاب واحد (1)

لقد كنت أفكر في وقت تحميل صفحة ثابت (أو متسق) منذ فترة طويلة. حيث تكون أوقات التحميل لكل صفحة ولكل مستخدم متسقة قدر الإمكان.

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

إعجاب واحد (1)

هل هذه النتائج بدون احتساب الوصول إلى قاعدة البيانات أيضًا؟

لقد قمت بتمكين هذا على exiges.com.

لم أقم بإجراء اختبارات معيارية، لكن يمكنني ملاحظة فرق في الطريقة التي تُفتح بها المواضيع والخيوط.

يجب أن تكون خطوة إيجابية حيث لم يبلغني المستخدمون بخلاف ذلك :slight_smile:

إعجاب واحد (1)

نعم، نحن نقيس فقط الوقت المستغرق في تنفيذ كود Ruby، باستثناء استعلامات قاعدة البيانات وأوامر Redis في التوقيتات.

إعجاب واحد (1)