I flag di Aikar cambiano a 12 GB — cinque di essi, e uno diminuisce
Copiare un set di flag da 4 GB su un server da 16 GB lascia cinque valori errati. Ecco esattamente quali cinque, più il conteggio dei giocatori in cui un server moddato supera la soglia e uno vanilla no.
I flag di Aikar sono gli argomenti JVM standard della community per un server Paper e di solito vengono copiati come un unico blocco. Non sono un blocco unico: dei venti argomenti, cinque cambiano a seconda che l'heap sia inferiore o superiore a 12 GB. Incollare un set per heap ridotto su un server con heap elevato è il modo più comune per eseguire "i flag consigliati" senza ottenerli.
I cinque che cambiano
| flag | sotto i 12 GB | 12 GB e oltre |
|---|---|---|
-XX:G1NewSizePercent | 30 | 40 |
-XX:G1MaxNewSizePercent | 40 | 50 |
-XX:G1HeapRegionSize | 8M | 16M |
-XX:G1ReservePercent | 20 | 15 |
-XX:InitiatingHeapOccupancyPercent | 15 | 20 |
G1ReservePercent is the one that goes down. Quattro dei cinque aumentano con la dimensione dell'heap e uno diminuisce, motivo per cui un vago ricordo del tipo "aumenta i numeri per un server grande" produce un set errato anziché semplicemente non ottimale. Riserva una frazione dell'heap contro i fallimenti di evacuazione, e un heap più grande richiede una frazione minore per mantenere lo stesso margine assoluto.
I restanti tredici -XX: arguments are identical at every heap size — -XX:+UseG1GC, -XX:MaxGCPauseMillis=200, -XX:+AlwaysPreTouch, -XX:SurvivorRatio=32, -XX:MaxTenuringThreshold=1 and the rest do not move. Only -Xms and -Xmx track the heap size itself.
Dove cade effettivamente la soglia dei 12 GB
Il generatore in questa pagina dimensiona l'heap in base al numero di giocatori:
GB = clamp( ceil( (modded ? 2.5 : 1) × (2 + players / 12) ), 2, 32 )
I server moddati sono calcolati a 2.5× del vanilla, e questo fattore determina chi vedrà mai il ramo per heap grande:
| giocatori | vanilla | moddato |
|---|---|---|
| 10 | 3 GB | 8 GB |
| 20 | 4 GB | 10 GB |
| 29 | 5 GB | 12 GB ← il moddato supera qui |
| 50 | 7 GB | 16 GB |
| 100 | 11 GB | 26 GB |
| 109 | 12 GB ← il vanilla supera qui | 28 GB |
Un server moddato raggiunge i flag per heap grande a 29 giocatori. Uno vanilla non prima di 109. Quindi, per la maggior parte delle persone che eseguono Paper vanilla, il set per heap ridotto è quello corretto in modo permanente — e per la maggior parte di chi usa server moddati, smette di essere corretto molto prima di quanto ci si aspetti.
Due limiti di questa formula che vale la pena conoscere
Non consiglia mai più di 32 GB. Il vanilla raggiunge il limite a 349 giocatori e vi rimane. Non si tratta di un artefatto di arrotondamento: oltre circa 32 GB la JVM perde i puntatori agli oggetti compressi e ogni riferimento nell'heap diventa più grande, quindi più RAM può significare meno heap utilizzabile. Scalare oltre questo punto è un lavoro per un secondo server, non per uno più grande.
Non consiglia mai meno di 2 GB, anche per un singolo giocatore, perché il limite minimo dipende dal software del server piuttosto che dalla popolazione.
E qualunque cosa dica la formula: non dare alla JVM tutto ciò che la macchina ha a disposizione. -Xms and -Xmx are set to the same value here on purpose — a fixed heap avoids the JVM resizing under load — which means the number you pick is claimed immediately and permanently. Leave the operating system 1–2 GB it does not have to fight you for.