تغيير علامات Aikar عند 12 جيجابايت — خمسة منها، وواحدة تنخفض
نسخ مجموعة علامات بحجم 4 جيجابايت إلى خادم بحجم 16 جيجابايت يترك خمس قيم خاطئة. إليك بالضبط أي خمسة منها، بالإضافة إلى عدد اللاعبين الذي يتجاوز فيه الخادم المعدّل الحد بينما لا يتجاوزه الخادم العادي.
علامات Aikar هي وسائط JVM القياسية للمجتمع لخادم Paper، وعادة ما يتم نسخها ككتلة واحدة. لكنها ليست كتلة واحدة: من بين عشرين وسيطًا، تتغير خمسة منها اعتمادًا على ما إذا كان حجم الذاكرة المؤقتة (heap) لديك أقل أو أكثر من 12 جيجابايت. لصق مجموعة مخصصة للذاكرة المؤقتة الصغيرة على خادم بذاكرة مؤقتة كبيرة هو الطريقة الأكثر شيوعًا لتشغيل "العلامات الموصى بها" وعدم الحصول عليها بشكل صحيح.
الخمسة التي تتغير
| العلامة | أقل من 12 جيجابايت | 12 جيجابايت أو أكثر |
|---|---|---|
-XX:G1NewSizePercent | 30 | 40 |
-XX:G1MaxNewSizePercent | 40 | 50 |
-XX:G1HeapRegionSize | 8M | 16M |
-XX:G1ReservePercent | 20 | 15 |
-XX:InitiatingHeapOccupancyPercent | 15 | 20 |
G1ReservePercent هي العلامة التي تنخفض. أربع من الخمسة تزداد مع حجم الذاكرة المؤقتة، بينما تنخفض واحدة، وهذا هو السبب في أن "زيادة الأرقام لخادم كبير" التي يتم تذكرها بشكل جزئي تنتج مجموعة خاطئة بدلاً من مجموعة غير مثالية فحسب. إنها تحتفظ بجزء من الذاكرة المؤقتة ضد فشل الإخلاء، وتحتاج الذاكرة المؤقتة الأكبر إلى جزء أصغر للاحتفاظ بنفس المساحة المطلقة.
الوسائط الثلاثة عشر المتبقية -XX: متطابقة في كل حجم ذاكرة مؤقتة — -XX:+UseG1GC، -XX:MaxGCPauseMillis=200، -XX:+AlwaysPreTouch، -XX:SurvivorRatio=32، -XX:MaxTenuringThreshold=1 والبقية لا تتغير. فقط -Xms و -Xmx تتبعان حجم الذاكرة المؤقتة نفسه.
أين يقع خط 12 جيجابايت بالفعل
يقوم المولد في هذه الصفحة بتحديد حجم الذاكرة المؤقتة بناءً على عدد اللاعبين لديك:
GB = clamp( ceil( (modded ? 2.5 : 1) × (2 + players / 12) ), 2, 32 )
يتم تخصيص ميزانية للخوادم المعدّلة (modded servers) بمقدار 2.5 ضعف الخوادم العادية (vanilla)، وهذا العامل يحدد من يرى فرع الذاكرة المؤقتة الكبيرة على الإطلاق:
| اللاعبون | عادي (vanilla) | معدّل (modded) |
|---|---|---|
| 10 | 3 جيجابايت | 8 جيجابايت |
| 20 | 4 جيجابايت | 10 جيجابايت |
| 29 | 5 جيجابايت | 12 جيجابايت ← المعدّل يتجاوز هنا |
| 50 | 7 جيجابايت | 16 جيجابايت |
| 100 | 11 جيجابايت | 26 جيجابايت |
| 109 | 12 جيجابايت ← العادي يتجاوز هنا | 28 جيجابايت |
يصل الخادم المعدّل إلى علامات الذاكرة المؤقتة الكبيرة عند 29 لاعبًا. بينما لا يصل الخادم العادي إلى ذلك إلا عند 109 لاعبين. لذا بالنسبة لمعظم الأشخاص الذين يديرون Paper العادي، فإن مجموعة الذاكرة المؤقتة الصغيرة هي الصحيحة بشكل دائم — وبالنسبة لمعظم الأشخاص الذين يديرون خوادم معدّلة، تتوقف عن كونها صحيحة في وقت أبكر بكثير مما يتوقعون.
حدان في هذه الصيغة يستحقان المعرفة
لا توصي أبدًا بأكثر من 32 جيجابايت. يصل الخادم العادي إلى الحد الأقصى عند 349 لاعبًا ويبقى هناك. هذا ليس خطأ تقريب — بعد حوالي 32 جيجابايت، يفقد JVM مؤشرات الكائنات المضغوطة (compressed object pointers) وتصبح كل إشارة في الذاكرة المؤقتة أكبر، لذا فإن المزيد من ذاكرة الوصول العشوائي (RAM) يمكن أن يعني أقل من الذاكرة المؤقتة القابلة للاستخدام. التوسع بعد هذه النقطة هو مهمة لخادم ثانٍ، وليس خادم أكبر.
لا توصي أبدًا بأقل من 2 جيجابايت، حتى للاعب واحد، لأن الحد الأدنى هو برنامج الخادم وليس عدد السكان.
ومهما قالت الصيغة: لا تعطِ JVM كل ما يحتويه الجهاز. -Xms و -Xmx تم تعيينهما على نفس القيمة هنا عن قصد — الذاكرة المؤقتة الثابتة تتجنب تغيير حجم JVM تحت الحمل — مما يعني أن الرقم الذي تختاره يتم المطالبة به فورًا وبشكل دائم. اترك لنظام التشغيل 1-2 جيجابايت لا يضطر للقتال معك من أجلها.