بقيت الأيام الأخيرة قبل جوكر ، وأردت حقًا أن أحضر إلى هبر ليس مقابلة عادية ، ولكن بعض الألعاب القوية. في الآونة الأخيرة ، كان الناس مهتمين بالخوادم على Arm ، وحدث أن لدينا خبراء حقيقيين في هذا الموضوع.
أسس ألكسندر (
أليكسبيل ) بيلوكريلوف وليشا فويتيلوف ، إلى جانب جريجوري لابزوفسكي ، الذي قاد مركز تطوير أوراكل في سانت بطرسبرغ ، شركة BellSoft قبل أكثر من عام بقليل. الآن تعمل الشركة بنجاح وتتطور وقد اكتسبت شهرة بالفعل في عالم جافا.
من خلال حجم الالتزامات في OpenJDK خلال العام الماضي ، فقد جاءوا في المركز الخامس ، والآن يتقدم فقط Oracle و Red Hat و SAP و Google:

عليك أن تفهم أن BellSoft ليست مجرد ذراع:
- تم إصدار Liberica JDK 11 ، ويدعم Linux x86_64 ، و Windows ، و Linux ARMv8 ، و Linux ARMv7 (بما في ذلك Raspberry Pi). سيتم وضع إصدارات لـ Mac و Solaris Sparc.
- يتم نشر صور جميع البنى على Docker Hub لـ Debian و CentOS و Alpine. صورة Alpine مصنوعة من الإصدار
--compress 2
باستخدام - --compress 2
وبالتالي فهي أصغر بكثير من JDK المعتاد.
في هذه المقابلة ، سنتطرق فقط إلى Arm ، ونترك الباقي للمرة القادمة.
حتى اليوم في الاستوديو الافتراضي لدينا:
ألكسندر بيلوكريلوف
ليشا فويتيلوف
أوليغ شيروخين - محررو مجموعة JUG.ru
أخبرنا المزيد عن الشركة؟
تعمل شركة BellSoft في عدة مجالات. ربما يعلم الجميع أن أوراكل في سانت بطرسبرغ كانت لديها خبرة منخفضة المستوى خطيرة للغاية في تطوير Java Runtime ، في تطوير المترجمات ، في تطوير أنظمة خدمة Oracle Cloud. وقد انتقلت هذه الخبرة من Oracle إلى BellSoft. اليوم ، تقوم شركتنا بتطوير Java Runtime ، ونحن مساهم نشط في OpenJDK ، نقوم بتطوير مجمعي gcc و llvm ، وسوف نساهم في Apache ، Graal stack. نحن منخرطون في بناء أنظمة تحليل البيانات الضخمة ، وأنظمة التوصية ، وقمنا ببناء مشروع صغير على إنترنت الأشياء ، لجمع البيانات من الأجهزة من العالم الحقيقي. في مرحلة ما ، رأينا أن Oracle توقفت عن إصدار توزيع Java لمنصات Arm ، وأصدرنا توزيعتنا الخاصة ، والتي كانت تسمى Liberica JDK لـ Raspberry Pi. منذ ذلك الحين ، ندعمه بنجاح.
دعونا نلقي نظرة فاحصة. ما هو مكدس أباتشي ، على سبيل المثال؟
بدأنا المساهمة في مؤسسة أباتشي مع Hadoop - يرتبط الكثير بأجزاء معينة من هذا المشروع. OpenJDK ومشاريع أباتشي الكبيرة ، وإن لم يكن بشكل مباشر ، ولكنهما مترابطان للغاية.
لماذا قد يكون كل هذا ضروريًا؟ على سبيل المثال ، بعض الفصول التي تبطئها ، هل يمكن زيادة سرعة التشغيل؟
نعم ، هذا أحد المجالات التي نعمل عليها - تحسين الإنتاجية. على سبيل المثال ، الأجزاء الخاصة بالمنصة ، والتي يمكن أن يساعد تسريعها في OpenJDK على تسريع Hadoop. إذا كانت مهتمة ، يمكننا التحدث عن ذلك.
عندما تحل مشاكل الأداء ، فمن المنطقي رؤية شيء قريب. ربما هناك نفس المشكلة في مكان ما. غالبًا ما ترى أنه بعد التصحيح في مكان واحد ، تحتاج إلى التصحيح في مكانين ، بحيث يصبح بشكل عام أفضل. في بعض الأحيان (وفي كثير من الأحيان) يتحلل تحسين الأداء إلى مساهمات في العديد من المشاريع. إذا كنت ترغب في تحسين أداء checksum
، على سبيل المثال ، فأنت تنظر إلى الجزء السفلي من المكدس. لنفترض أنها جافا. إذا نظرت أعلى قليلاً ، سيكون Hadoop أو Spark أو أي شيء آخر. عادة ، بفهم كيفية تحسين مكان ما ، يمكنك فهم كيفية القيام بذلك في مكان آخر. بالطبع ، من المنطقي في هذه الحالة الذهاب والتحسين هناك أيضًا.
يعلم الجميع أنك ليبيريكا :-) لنتحدث عن هذا.
نعم ، نحن Liberica JDK. بدأت Liberica بحقيقة أننا رأينا أنه لا يوجد منفذ لـ ARM32 ، ويلزم القيام به بشكل عاجل ، لأن Raspberry Pi تم تركه بدون Java 9 و Java 10. كان هذا في عام 2017 عندما ظهرت Java 9. الآن يدعم Liberica JDK العديد من الهياكل وأنظمة التشغيل.
أصبح من الواضح أن أوراكل لن تقوم بتطوير الكود الخاص بـ Arm ، وبدأنا في توزيع وإصدار توزيعنا بنشاط لسد هذه الفجوة. أصبح من الواضح أن الناس بحاجة إليها.
لذلك ، الآن هناك العديد من توزيعات الذراع؟
نعم ، هناك العديد من توزيعات Java لـ Arm ، وهي مختلفة. في بلدنا ، تحصل بالفعل على ما كان جزءًا من مجموعة توزيع منفذ Oracle. يحتوي توزيعنا على JavaFX وإدخال / إخراج الجهاز وواجهة برمجة تطبيقات قابلة للتضمين. هذه حزمة ، وكلها تعمل مع وحدات ، بدءًا من JDK 9. باستخدام نظام معياري ، يمكنك بناء وقت التشغيل كما تريد. إذا كنت تريد ، يمكنك إنشاء وقت تشغيل صغير 16 ميغا بايت. إذا كنت ترغب في تمكين المزيد من الميزات ، على سبيل المثال ، خادم الويب ، فأنت بحاجة إلى إنفاق حوالي 32 ميغابايت من المساحة الثابتة. يمكنك الحصول على وقت تشغيل مناسب لاحتياجاتك.
بقدر ما فهمت ، كنا نتحدث عن خوادم الجيش. لا يعني أننا استخدمناها بكثرة. أخبرني عن الخادم؟ في الحياة الواقعية هل هم موجودون على الإطلاق؟
هذه القصة موجودة منذ سنوات عديدة. تم إنشاء أول خادم Arm على أساس بنية ARMv7 32 بت. كان صندوقًا مزعجًا بشكل رهيب ، والذي لم يعمل عمليًا ، لأن BIOS و Linux لم يعملوا هناك ، واختفى كل شيء بعد بضع ساعات. الشركة التي بدأتها ، Calxeda ، أغلقت بمرور الوقت. لكن فكرة تطوير بنية بديلة للخوادم قد زرعت في المجتمع. أصدرت Arm في النهاية مواصفات جديدة لهندسة ARMv8 ، والتي تدعم كلاً من 32 و 64 بت. استنادًا إلى الإصدار 64 بت من هذه المواصفات ، يقوم العديد من الشركات المصنعة الآن ببناء تطبيقات المعالج الخاصة بهم للخوادم. على سبيل المثال ، Ampere Computing ، Cavium ، التي تم شراؤها الآن بواسطة Marvell و Qualcomm. وهناك شركة أخرى - AMD ، قبل بضع سنوات ، أصدرت أيضًا خوادم تعتمد على هندسة الذراع. في رأيي ، ما زالوا يواصلون القيام بذلك.
إذا قمت بإزالة حرف L واحد من Marvell ، فستحصل على أبطال خارقين. طريقة جيدة لتذكر أسماء كل هذه المكاتب.
الأبطال الخارقون هم في الواقع Cavium / Marvell ، لأنهم جميعًا تمكنوا من تجميع الشريحة الأكثر إنتاجية حتى 128 خيطًا على وحدة معالجة مركزية واحدة ، وقابلة للمقارنة أو أفضل في الأداء مع Xeon Gold و Platinum. يمكنك وضع العديد من وحدات المعالجة المركزية في خادم واحد ، وستحصل على شيء وحشي مع ذاكرة سريعة يمكن استخدامها في المهام الجادة.
كيف ينمو حد قابلية التوسع للتطبيقات الشائعة؟ ما مقدار وحدة المعالجة المركزية التي من المنطقي الالتزام بها في خادم واحد؟
كل هذا يتوقف على المهمة التي تريد إنشاء الخادم من أجلها. يسترشد المصنعون المختلفون بمنافذ مختلفة ، ولكن إذا كنا نتحدث عن Cavium / Marvell ، فإنهم يسترشدون بوضوح بمكان الحوسبة ، حيث تحتاج إلى مضغ كمية كبيرة من البيانات بسرعة بالتوازي. لا يركزون على الأداء الكبير الفائق لمؤشر ترابط واحد (في نفس الوقت ، إنه جيد جدًا) ، أي بشكل عام ، لكي تعرض وحدة المعالجة المركزية هذه أداءً عاليًا مع استهلاك منخفض التكلفة.
لماذا تسليح وليس انتل؟ لدينا خوادم إنتل الرائعة ، لماذا نخرج بشيء آخر؟
من الصعب والإجابة على هذا السؤال. أولاً ، لا يحدث أن يكون المكان المقدس فارغًا. نرى أن AMD تحاول أيضًا بناء نوع من Intel البديل لتطبيقات الخادم. وبالطبع ، سيكون هناك دائمًا قطعة بديلة من السوق من شركات تصنيع بديلة.
لا أحد يريد أن يعيش مع محتكر واحد.
ملاحظة حقيقية جدا. جميع مستهلكي المعالجات ، وهم في الأساس مزودو الخدمات السحابية ، يريدون فرصة بديلة. بحيث يمكنك الاختيار ومقارنة التكلفة مع التكاليف ولتطبيقات محددة ، اختر بنية أكثر ربحية.
وماذا عن التكاليف؟ كم أغلى من حلول إنتل؟
هذا سؤال صعب. أولاً ، كما قال أليكسي ، الشركات المصنعة كافية. من الواضح أن الشركات المصنعة لمعالجات الذراع الآن لا تتنافس مع بعضها البعض ، ولكنها تتنافس مع شخص آخر. يشغلون منافذ مختلفة قليلا. إذا كان Cavium حوسبة عالية الأداء ، فإن Qualcomm هي خوادم متوسطة المدى ، أما Ampere فهي إما محطات عمل أو خوادم منخفضة التكلفة.
إذا كنت أتذكر بشكل صحيح ، فإن سعر وحدة المعالجة المركزية نفسها من Ampere Computing هو 600-900 دولار ، وهي تتنافس مع Intel ، وهي وحدة معالجة مركزية تكلف حوالي 1500 دولار. Cavium غالي الثمن بعض الشيء. مرة أخرى ، سوف يتنافسون مع Intel ، وهي أغلى بكثير. عليك أن تفهم أن سعر الخادم ليس فقط سعر وحدة المعالجة المركزية. سعر الخادم هو أيضا الذاكرة والأقراص والدعم والاستهلاك. إذا فزت بمعلمة واحدة ، على سبيل المثال ، تكلفة وحدة المعالجة المركزية - فلا بأس ، ولكنك ستكون أرخص قليلاً فقط. إذا فزت بطريقتين ، على سبيل المثال ، كونك أرخص ، وتقديم أداء أفضل ، فسوف ينظرون إليك عن كثب. وإذا كان في ثلاثة ، على سبيل المثال ، يمكنك أيضًا القيام بكل هذا باستهلاك أقل للطاقة ، فهذا بالفعل تطبيق للنصر.
بالإضافة إلى الحديد ودعمه ، فإن الدعم في البرامج مهم أيضًا. لا يمكنك تشغيل كل شيء تقوم بتدويره الآن على Intel.
بالطبع. يجب أن أقول أن النظام البيئي الذراع للبرمجيات قد تقدم إلى الأمام. إذا كانت هناك مشاكل قبل خمس سنوات من أجل رفع قطعة من الحديد ، فلا توجد مثل هذه المشاكل الآن. لقد أتيت للتو وكل شيء يعمل خارج الصندوق من أجلك. كل شيء تعتاد على العمل - Linux ، Docker ، Kubernetes ، Xen ، Java ، Hadoop ، Spark ، Kafka ، أي شيء.
ماذا عن جافا؟ أخبرنا كيف يعمل ، كيف يختلف عن "المعتاد"؟
لا فرق ، هذه هي ميزتها الرئيسية. إنه منتج بما يكفي للتعامل مع المهام التي تم تعيينها لـ Java للخوادم. تقوم بنقل تطبيقك (آمل أنه لا يحتوي على جزء أصلي ، وإلا سيتعين عليك إعادة ترجمته) ، إلى خادم Arm ، والتحقق من الأداء ، وفي معظم الحالات ، نفرح. في الآونة الأخيرة ، تم نشر مقال حيث قارنا أداء خادم Arm بخادم Intel . جاء المقال في مجلة جافا.
هل سمحت لك Oracle بالإعلان في مجلتك الخاصة؟ بجدية.
على ما يبدو ، هناك طلب. اتضح أن خوادم Java Arm لأحمال عمل Java تعمل بشكل جيد. هم نفس ، أو حتى أفضل من نظرائهم لشركة إنتل.
من يجب أن يقرأ مقالك؟
بالنسبة لأولئك الذين يريدون أن يروا ، اختبر البنية الجديدة ، سواء كانت مناسبة لأحمالها. جرب كل من Java ونفس خوادم Arm. قم بقيادة Arm Arm Cloud Cloud إلى Google ، وستحصل على العديد من مزودي الخدمات السحابية ، ويمكنك حمل البطاقة وتجربة ما تحتاج إليه.
هل Java مثبت مسبقًا مسبقًا هناك؟
نعم OpenJDK عادي.
هل OpenJDK المنتظم وتوزيع توزيع Liberica الخاص بك هو نفس الشيء؟ رأيت أن هناك تعهداتك - هل هي أم شيء آخر؟
بشكل عام ، فإن تاريخ منافذ Arm و OpenJDK مثير للاهتمام ومزخرف. في البداية ، قامت Oracle بتطوير منفذ Arm ، وعندما أصدرت Arm بنية ARMv8 ، تمت إضافة منفذ إضافي إلى منفذ Arm هذا مما سمح بتشغيل Java على ARMv8. بالتوازي مع هذا ، عملت Red Hat أيضًا في هذا الاتجاه وصب ميناءها في OpenJDK لهذه الهندسة المعمارية. حدث أن المجتمع ركز على ميناء ريد هات. لذلك ، لدينا الآن الملحق الذي كان موجودًا في OpenJDK لمنفذ ARM32 ، والذي يكرر في الواقع وظيفة منفذ aarch64 - سنقوم بإزالته من هناك في JDK 12. من خلال القيام بذلك ، لدينا JEP 340.
يجب أن أقول أن أوراكل تدفقت في OpenJDK على جميع إنجازاتها من جميع منافذ Arm المضمنة قبل إيقاف الدعم. يتم الآن صب جميع ميزات Arm التي تم تصنيعها في Oracle.
هذا أمر منطقي ، لأن مصنعي الحديد ومصنعي المواصفات يجب أن يهتموا بشكل أساسي من أجل أن يعمل النظام البيئي للبرامج على أجهزتهم وأن يكون متوافقًا مع مواصفاتهم. لهذا ، يجب أن يكون الرمز مفتوحًا.
رأيت الرسوم البيانية التي تظهر شخصيات مذهلة أن شركة معينة BellSoft ، تقع في سانت بطرسبرغ ، أغرقت عددًا كبيرًا من الالتزامات.
نعم ، نحن ضمن أفضل 5 أعضاء في OpenJDK. بطبيعة الحال ، أوراكل خارج المنافسة ، هناك حوالي 4 آلاف التزام في السنة.
يأتي بعد ذلك Red Hat و SAP و Google و BellSoft. لم نصل إلى Google قليلاً. وبعدنا مباشرة شركة IBM.
ما النسبة المئوية للموظفين الذين اعتادوا العمل في Oracle؟
100 بالمائة. تتكون BellSoft من موظفين سابقين في Oracle.
هذه منافسة غير عادلة لأن Google لا تتكون من 100 بالمائة من موظفي Oracle. أي نوع من الإرتكابات أخبرني؟ كيف تحقق هذا النجاح؟ كيفية الدخول إلى أعلى 5 مشاركين؟
نحن نعمل في عدة اتجاهات. الآن الاتجاه الرئيسي حيث تذهب التزاماتنا هو منفذ ARM64 ، وهو نفس منفذ الخادم. من المثير للاهتمام لمنتجي الحديد. هم مهتمون بجافا العمل بسرعة على أجهزتهم ، والتعامل مع الأحمال. الشيء الثاني الذي نلتزم به هو منفذ ARM32 ، والذي ندعمه ، وهذا هو المنفذ المضمن. والثالث هو عمليات تهدف إلى دعم وإصلاح وتحسين الوظائف العامة لـ Java.
تحدثنا للتو عن 64 بت على الخوادم. لماذا لا يزال المنفذ 32 بت حيًا؟
لأنه يستخدم في المضمن.
لأن العديد من الشركات طبقت وحدة معالجة مركزية لهيكل ARMv7 للتطبيقات المدمجة. لديهم عدد كبير من الرقائق في مستودعاتهم. إذا كانت الذاكرة تخدمني بشكل صحيح ، فإن مجموعة متنوعة من هذه الرقائق هي ARM32 ، والأكثر شعبية هو ARMv5. هذه البنية موجودة منذ سنوات عديدة ، ولكن مع ذلك ، فإن وحدات المعالجة المركزية رخيصة جدًا ، ولا يزال المصنعون يفكرون في إنشاء أجهزة جديدة على هذه البنية.
ما المبالغ التي نتحدث عنها عندما نتحدث عن البناء؟ هل يمكن للشخص العادي أن يشتري شيئًا لنفسه ويختبر؟
الأكثر شعبية في منصة ARM32 هو Raspberry Pi ، بدءًا من الإصدار الثاني - الإصداران الثاني والثالث ، بالإضافة إلى كل هذا مدعوم من منفذ ARM32. أحد توزيعاتنا هو ARM32 الذي تم اختباره وتشغيله على Raspberry Pi. نرى أن هذه هي المنصة الأكثر شيوعًا لجمهور عريض ، وبالتالي فإننا نطلق المنفذ خصيصًا لـ Raspberry Pi. لدينا منافذ أكثر تحديدًا للحديد المتخصص للغاية ، لكن هذه قصة أخرى.
ربما لا تحتاج للشراء. يمكنك رؤية ما لديك في جهاز التوجيه المنزلي. من المحتمل جدًا أن يكون هناك شيء من هذا القبيل.
كم يجب أن تتوافق مهارات المطور هناك؟
يجب أن تكون مطور Java.
هل تحتاج إلى طرق صعبة لمعرفة قانون Kirchhoff من أجل الترميز؟
لديك فقط جهاز كمبيوتر يمكنك الاتصال به عبر SSH. لا حاجة وميضه. تأخذ بطاقة microSD مع صورة Linux لـ Raspberry Pi ، أدخلها ، وسيبدأ كل شيء. هذه هي الميزة الرئيسية لـ Raspberry Pi مقارنة بجميع أجهزة الكمبيوتر الأخرى ذات اللوحة الفردية. بساطة تكوينه ، الحصول على نظام عملي.
وكيف تعمل مع أجهزة الاستشعار؟ نفعل كل هذا من أجل الأنظمة الخارجية ، أليس كذلك؟
يحتوي Raspberry Pi على نظام GPIO ودبابيس يمكنك توصيل أي شيء بها. على ما عادة ما يربط جميع المتحمسين جميع الأجهزة الطرفية بـ Raspberry Pi.
كيف تبدو API؟ ما الذي يجب كتابته ، مثل "أحضر لي رقمًا من منظم الحرارة"؟
تحتاج إلى قراءة ورقة بيانات الترموستات ، وفهم ما هي التسجيلات ، وكيفية تهيئتها ، وكيفية تكوينها. إذا كان I2C ، استدعاء طريقة التكوين ، تمرير جميع المعلمات هناك. ثم أخبره i2c.open ، واعمل معها ككائن Java.
هل من الممكن كتابة أغلفة أغراض جميلة حول منظمات الحرارة للعمل في نموذج كائن بحت؟ هل يمكن القيام بذلك حتى لا تقرأ ورقة البيانات بعد الآن ، لإغلاقها بواجهة؟
سيكون من الجيد إذا قامت الشركة المصنعة لهذا المستشعر بتكوين جاهز ، ونحن كمبرمجين جافا ، أخذناه ببساطة واستخدمناه. تعمل المكتبة بجهاز استشعار واحد ، ومكتبة للعمل بجهاز استشعار آخر. تسمى هذه المكتبة أو شيء قريب من هذا Pi4J. إنه يتطور الآن ليس بالسرعة التي كانت عليها في الأيام التي كانت أوراكل تتحرك فيها Java مضمنًا ، لكنه لم يمت حتى الآن ، تظهر بعض التحديثات بشكل دوري. هناك خيار: إما العمل مع شيء موجود في OpenJDK - GPIO ، أو العمل مع مكتبة Pi4J.
إذا كنت شركة مصنعة للأجهزة ، فأنا لا أعرف أي شيء عن Java ، لكني أرغب في أن يستخدمها مبرمجو Java ، بمن اتصل؟ للاتصال بك؟ أم أن هناك متخصصين يقومون بذلك؟
نعم ، نحن متخصصون.
حتى الآن لم نذهب بعيداً. أتذكر أنه كان لديك بعض من JEPs الخاصة بك ، أليس كذلك؟
يتضمن الإصدار 11 من OpenJDK 17 JEPs. تم عمل 14 من قبل Oracle ، 1 - Google ، 1 - Red Hat ، 1 - BellSoft بالاشتراك مع Cavium. JEP الخاص بنا هو خليط من تحسينات أداء Java على منصة ARM64 لأحمال عمل معينة. JEP ، على التوالي ، يُدعى تحسين الجوهر Aarch64 . باختصار ، قمنا بتحسين أداء العمليات باستخدام String ، والمصفوفات ، وقليلاً مع الرياضيات وعلم المثلثات.
ما هي الجوهر؟ لا يعلم الجميع.
عندما يعتبر الجهاز الظاهري شرطًا ، بدلاً من تنفيذ رمز Java المباشر ، يمكنه استبدال إدراج المجمّع المحسن ببنية محددة.
الذي يستدعي المعالج الذي يحتوي على الأمر sine مباشرة؟
والتي ستحسبها وفقًا لخوارزمية معقدة. هناك بعض العوامل الجوهرية التي تستدعي نوعًا من أوامر المجمّع. على سبيل المثال ، الجوهرية المرتبطة بحساب المجموع الاختباري. توجد تعليمات التجميع هذه لجميع الهياكل تقريبًا. هناك الكثير من التعقيدات المعقدة عندما تكتب العديد من صفحات المجمع للحصول على أداء جيد.
والتشفير ، هل هو في الأجهزة؟
نعم ، عادةً ما تكون هذه مكالمة للتعليمات الحالية لمعالج معين. في بعض الأحيان - العمل مع الإضافات على تلك الرقائق أينما كانوا.
بالعودة إلى JEP الخاص بك: كيفية تحديد الرمز الساخن بحيث يستحق كل هذا العناء؟
سؤال عظيم. عندما بدأنا في تحسين شيء ما لمنصات ARM64 ، لم يكن لدينا عدد كبير من الأدوات ، إلى جانب الأداء. نعم ، ولم يعمل في كل مكان. لم يكن هناك تطبيق JFR لمنفذ ARM64 ؛ لم تضعه أوراكل بعد في Open Source في ذلك الوقت. أدوات مختلفة لقياس الأداء التي استخدمناها ، على سبيل المثال ، ملف التعريف غير المتزامن ، المحلل الأمين - لم تعمل أيضًا لمنصات ARM64. أول شيء فعلناه هو الحصول على كل هذه الأدوات في هذه الهندسة المعمارية.
لماذا لا تعمل خارج الصندوق؟
لأن هناك نوع ما من جزء خاص بوحدة المعالجة المركزية.
ثم تقوم بتشغيل هذه الأدوات على عبء العمل الذي تحاول تحسينه ، والنظر إلى الشاشة لفترة طويلة ، ومحاولة فهم الأساليب الساخنة هناك ، وما هي الأماكن الساخنة فيها. هناك حالات بسيطة عندما لا يتم تنفيذ بعض إدخالات المجمّع لبنية معينة. في هذه الحالة ، يحدث احتياطي في كود Java. فقط من خلال تنفيذ إدخالات التجميع هذه يمكنك الحصول على زيادة في الأداء. هناك أماكن أكثر تعقيدًا عندما تحتاج إلى فهم ما يدرجه المجمع الجديد الذي تحتاجه في Java لإنشاء جميع البنى. مثل هذا العمل.
مجموعة بيانات سام من أين تحصل عليه؟ افراغ المعجون بالكامل وتشغيله تحت JIT؟
من الواضح أنه يتم تحسين بعض المعايير أو أعباء العمل. معايير معروفة - SpecJBB و SpecJVM. هناك أعباء عمل محددة تهم عملاء معينين. فقط قم بتشغيل أحمال العمل هذه وانظر إلى الاختناقات.
كل هذه المواصفات هي اختبارات قديمة جدًا ، أليس كذلك؟ ماذا عن اللمداس الجديدة والجداول والتواريخ الكبيرة؟
لا شيء. إنه ليس هناك.
وأين يمكن الحصول عليه؟
أعباء العمل الجديدة.
على سبيل المثال ، مكدس apachevsky؟
نعمHadoop لديها معيار TeraSort القياسي ، الذي يحب مصنعي الأجهزة قياسه. أيضا واحدة من المهام المثيرة للاهتمام للتحسين.
ما هي أفضل الميزات لتحسينها الآن؟ على سبيل المثال ، الجزء العلوي من نفس JEP.
تم إغلاق مناطق المشاكل الرئيسية لهذه الهندسة المعمارية الموجودة هناك. هناك ، بالطبع ، لا يزال هناك مجال غير مفسر لما لم نفعله وما سنواصل القيام به. سنستمر في العمل في علم المثلثات ، وسنلقي نظرة على الجوهرية الجديدة التي ستظهر. لم يصلوا بعد ، لكننا نفهم أنهم سيظهرون قريبًا. سيتعين علينا النظر إلى مشروع بنما ، الذي تساهم فيه إنتل بنشاط كبير.
كيف سيرى المترجم ما تفعله؟ تقليديا ، سيفهم بطريقة سحرية أنك تفكر في صيغة معروفة جيدا وتحسنها؟
Math.sin
, Java- sin
.
- , sin
?
نعم , .
- , , ?
C2, .
- . , ?
.
, Linaro Connect OpenJDK ARM64. Linaro Foundation Arm-.
?
Arm, . .
?
. . Joker, .
!
, . floating point. , , , . — , . , , — . , .
. , , ?
نعم Arm … , — . , . - - , — . , , . , , . , Java- , .
, - , . ?
OpenJDK BellSoft.
, , ? ? Oracle, . JVM-?
, OpenJDK. ()
, 250 . ?
, 250 . .
— ? .
, . . , — . - .
, ?
.
?
. . , - , , . , , , . - . , . , , . , OpenJDK .
?
Mailing list. - mailing list, .
-?
Jira. OpenJDK Jira, , , .
Jira Jira, , ?
OpenJDK . , Jira.
? , , , , , Arm?
Arm, , , . shared-, , . , . .
, . , .
, . HotSpot, , , . , , - — .
- ?
نعم HotSpot tiers. smoke- . , , . , performance-, stress-.
. , , JDK, . JDK, . , ?
JDK, , JVM. JVM 4 : runtime, serviceability, garbage collector, compiler. - . , runtime. - out of order execution, , GC . , JIT, . community OpenJDK — JIT.
, , ?
, . , . . . , -, , .
? ? ? , , - ?
. , .
, , - , . .
. , OpenJDK Arm. , , IT. -, , Arm . , Arm, Arm , . , OpenJDK, Arm. , , . Arm Intel SPEC-. , . . !
, ?
, ?
, .
. . , ARM64? . , Arm .
.
— , , -, . ? - , Arm?
, .
?
Arm . . , , ? . .
, . , , , . - 10 , GPU - , . Cloud- . , , -. GPU, CPU. -, HTTP 404. , . , .
, - , ? - ?
. , . 30 ? . , . - , , . : 20% , 20%, — 10%, - . , Arm .
, Java, , . , , .
Arm , BellSoft — Arm, . OpenJDK, - . Liberica Liberica Arm 32 64, Liberica Linux (64 ), Windows Liberica Mac. Liberica Solaris Sparc. .
Liberica Mac? -.
? Oracle , … . ?
?
, Oracle. , Java- .
Java- .
, . , .
.
نعم -, support . - — , , Cloud-. , , - , .
, Oracle JDK , API. -XX:+UnlockCommercialFeatures
. , . , Oracle , .
, Oracle - Oracle, . . Java , .
, , OpenJDK . . BellSoft , , .
, , . . , , OpenJDK — .
!
. , — . - ?
. , , , . .
- OpenJDK.
. ?
Liberica, . Raspberi Pi, Linux-. , Java, -.
Joker, , BellSoft — .
. , , . , :-) Joker — .
, . !
. Joker 2018 «, ARM? , » . .