متابعة لسلسلة المقالات ضد شيء ضد شيء ما ، نلقي نظرة أخيرًا على شيء مفيد ، وهو خادم Minecraft. فكر في نظام التشغيل وأي جافا لا يزال أفضل من أجل استضافة أفضل لعبة للبشرية. للمقارنة ، تم أخذ Ubuntu 18.04 LTS و Server Core 2019. تم تثبيت OpenJDK على Ubuntu ، وتم تثبيت Oracle Java و AdoptOpenJDK على Windows.
كما هو الحال في جميع الاختبارات المقارنة الأخرى ، لم يكن للأجهزة الافتراضية جيران ، حيث كان يعمل جهاز ظاهري واحد فقط دائمًا على المضيف.
بدأت الخوادم بالوسيطات:
-Xmx8G -server
تمت إزالة مكون Windows Defender على Windows Server Core ، كما في صورتنا باستخدام
Windows VDS مقابل 99 روبل. بالمقارنة ، هذا هو ما تخسره عند تركه قيد التشغيل.
لكل من توزيعات Java ، تم تثبيت أحدث الإصدارات المتاحة للجمهور ، وهي:
Oracle: "1.8.0_241"
AdoptOpenJDK: "1.8.0_242"
OpenJDK: "1.8.0_232"
الجولة رقم 1 ، جيل العالم
في هذا الاختبار ، نولد العالم. كان المولد Geographicraft مع Biomes'O'Plenty و Dynamic Trees و PVG وكهوف worley و IC و BC مثبتة.
العالم ليس بأي شكل من الأشكال الكلاسيكية ويتم إنشاؤه بشكل ملحوظ أبطأ من المعتاد.
تم إنشاء عالم مكون من 2704 قطعة:
يبتعد Windows مع AdoptOpenJDK عن منافسيه لمدة 5 ثوانٍ.
الجولة رقم 2 ، بداية الخادم
تم القياس في ثلاث تمريرات لكل جهاز افتراضي. في كل مرة ، أكمل كل من الخوادم تنزيل العالم في الثانية في الثانية الواحدة مقارنة بالنتيجة السابقة.
OpenJDK على ويندوز و OpenJDK على لينكس تظهر نفس النتائج.
الجولة رقم 3 ، الذاكرة المحتلة
تبدأ العملية في استهلاك المزيد من الذاكرة ، يتم تثبيت المزيد من النوى عليها. يوجد أدناه جدول بالذاكرة المشغولة لعملية خادم فارغة دون تحميل العالم عليها.
يستهلك Oracle JRE ما يتراوح بين 80 و 100 ميغابايت في المتوسط على عدد زوجي من النوى. الشيء نفسه ينطبق على AdoptOpenJDK ، فقط على عدد فردي من النوى.
لينكس لم تظهر هذه الغرابة.
الجولة رقم 4 ، 32 دجاجة في 2 من 2 مربع
المشهد عبارة عن حساب لتصادم 32 دجاجة في مربع 2 × 2. تم إعداد المشهد مقدمًا وتناثر العالم نفسه حول الخوادم بحيث كان كل شيء صادقًا.
تم تثبيت نواة واحدة لهذا الاختبار ، وتم تعيين العملية على أولوية الوقت الحقيقي.
كانت مجموعة عمل OpenJDK في هذا المشهد تزيد بمقدار 40 ميجابايت عن منافسيها.
متوسط استهلاك المعالج في Oracle و AdoptOpenJDK هو نفسه ، لكن جمع القمامة من Oracle يجمع بشكل متكرر أكثر وأكثر كثافة ، مما يؤدي غالبًا إلى رشقات من نشاط المعالج.
لاستكمال عدد المشاهد التي يمكننا معالجتها ، دعنا فقط نزيد من معدل علامات الخادم.
في اختبار التحميل العالي ، استوعب برنامج Ubuntu c OpenJDK باستخدام Windows c AdoptOpenJDk ، وأوراكل تلحق بالركب.
تحت تحميل أعلى ، أعطى OpenJDK على Windows نتائج أفضل من Ubuntu.
تم مسح خادم OpenJDK على أوبونتو باستمرار وتجمد المشهد. كان ويندوز أسوأ قليلا على نفس OpenJDK. ومع ذلك ، تعامل Oracle مع الأفضل بأقل عدد من التجميد.
من بين أشياء أخرى ، احتفظ Oracle SE بنفس مقدار ذاكرة الوصول العشوائي (OpenJDK).
الجولة رقم 5 ، 64 * 64 قطعة والأشجار الديناميكية
يحتوي هذا المشهد على غابة وعشرات الغوغاء. كيلومترات من الأشجار تنمو باستمرار وتحديث موقف كتلهم.
كل شجرة عبارة عن تجانب منفصل ، ولكن في البداية يكون معدل التجزئة منخفضًا ، حيث يتم تحديد مرة واحدة فقط في 20 لعبة. يوجد أدناه رسم بياني لاستخدام المعالج لكل خادم tickrate.
تعذر على Ubuntu + OpenJDK و Windows Server مع Oracle onboard بدء تشغيل الخادم في الوسائط التي تمت مناقشتها مسبقًا ، لذا لم يدخلوا في الجدول.
لبدء الخادم ، اضطررت إلى تغيير العلامات إلى:
-Xms4g -Xmx8G -server -XX:+UseCompressedOops -XX:+AggressiveOpts
استقرت المثيلات الثلاث في البداية على 100٪ من المعالج ، ولكن لم يقم Windows Server + AdoptOpenJDK فقط بإسقاط الخادم. بعد جمع القمامة ، عاد كل شيء إلى الجدول أدناه.
عند التبديل من معدل سرعة يتراوح من 60 إلى 70 ، على Ubuntu ، بدأ جدول تحميل وحدة المعالجة المركزية يتصرف مثل موجة جيبية ، وهذا هو السبب في أن استخدام وحدة المعالجة المركزية المتوسطة بدأ فجأة في الانخفاض بسبب التعقيد المتزايد للمهمة. وبسبب هذا ، كان لا بد من إيقاف الجدول حيث هو الآن.
قد يكون هذا هو الفرق بين جدولة Linux و Windows.
الاستنتاجات:
على الرغم من الاختلاف الموضوعي في توزيعات OS و JRE ، إلا أنه من المستحيل تقديم توصية محددة ، والتي تعد أفضل موضوعيًا للحفاظ على الخادم عليها.
في هذه الحالة ، ربما يستحق اختيار نظام التشغيل الذي أنت أكثر دراية به.
