Guias / Servidores e desempenho
As flags do Aikar mudam a partir de 12 GB — cinco delas, e uma diminui
Copiar as flags de um servidor com 4 GB para outro com 16 GB deixa cinco valores incorretos. Veja quais mudam e com quantos jogadores um servidor com mods ultrapassa o limite que um servidor vanilla ainda não alcançou.
As flags do Aikar são os argumentos JVM padrão da comunidade para um servidor Paper, e geralmente são copiadas como um bloco único. Mas elas não são um bloco único: dos vinte argumentos, cinco mudam dependendo se o seu heap está abaixo ou acima de 12 GB. Colar um conjunto de heap pequeno em um servidor de heap grande é a maneira mais comum de usar "as flags recomendadas" e não obtê-las.
As cinco que mudam
| flag | abaixo de 12 GB | 12 GB ou mais |
|---|---|---|
-XX:G1NewSizePercent | 30 | 40 |
-XX:G1MaxNewSizePercent | 40 | 50 |
-XX:G1HeapRegionSize | 8M | 16M |
-XX:G1ReservePercent | 20 | 15 |
-XX:InitiatingHeapOccupancyPercent | 15 | 20 |
G1ReservePercent é a que diminui. Quatro das cinco aumentam com o tamanho do heap e essa diminui, por isso uma lembrança vaga de "aumentar os números para um servidor grande" produz um conjunto errado em vez de apenas subótimo. Ela reserva uma fração do heap contra falhas de evacuação, e um heap maior precisa de uma fração menor para manter a mesma margem absoluta.
Os treze argumentos -XX: restantes são idênticos em qualquer tamanho de heap — -XX:+UseG1GC, -XX:MaxGCPauseMillis=200, -XX:+AlwaysPreTouch, -XX:SurvivorRatio=32, -XX:MaxTenuringThreshold=1 e os demais não se alteram. Apenas -Xms e -Xmx acompanham o tamanho do heap em si.
Onde a linha de 12 GB realmente se situa
O gerador nesta página dimensiona o heap a partir da sua contagem de jogadores:
GB = clamp( ceil( (modded ? 2.5 : 1) × (2 + players / 12) ), 2, 32 )
Servidores com mods são orçados em 2.5× vanilla, e esse fator decide quem realmente vê a ramificação de heap grande:
| jogadores | vanilla | com mods |
|---|---|---|
| 10 | 3 GB | 8 GB |
| 20 | 4 GB | 10 GB |
| 29 | 5 GB | 12 GB ← com mods cruza aqui |
| 50 | 7 GB | 16 GB |
| 100 | 11 GB | 26 GB |
| 109 | 12 GB ← vanilla cruza aqui | 28 GB |
Um servidor com mods atinge as flags de heap grande com 29 jogadores. Um servidor vanilla não o faz até 109. Então, para a maioria das pessoas que executam Paper vanilla, o conjunto de heap pequeno é o correto permanentemente — e para a maioria das pessoas que executam com mods, ele deixa de ser correto muito antes do que esperam.
Dois limites nessa fórmula que valem a pena conhecer
Nunca recomenda mais de 32 GB. O vanilla atinge o limite em 349 jogadores e permanece lá. Isso não é um artefato de arredondamento — acima de aproximadamente 32 GB, a JVM perde os ponteiros de objeto compactados e cada referência no heap fica maior, então mais RAM pode significar menos heap utilizável. Escalar além desse ponto é trabalho para um segundo servidor, não um maior.
Nunca recomenda menos de 2 GB, mesmo para um único jogador, porque o piso é o software do servidor e não a população.
E seja o que for que a fórmula diga: não dê à JVM tudo o que a máquina tem. -Xms e -Xmx são definidos com o mesmo valor aqui de propósito — um heap fixo evita que a JVM redimensione sob carga — o que significa que o número que você escolhe é reivindicado imediatamente e permanentemente. Deixe 1–2 GB para o sistema operacional, para que ele não precise brigar com você.