Quanta RAM serve a un server Minecraft?
Stima la RAM necessaria per i server Minecraft Java, Paper e con mod.
Stai aprendo un server per amici su un PC con 8 GB di RAM. Scrivere -Xmx8G nel file di avvio è facile: che la RAM usi 8 e Java pure 8. Poi ti ricordi di Windows, del browser e, se giochi sullo stesso PC, del client Minecraft. Prima ancora che qualcuno effettui l'accesso, la memoria di sistema non trova più spazio da condividere. A volte il problema non è nel server, ma in quella singola riga.
Guarda separatamente i risultati “Java heap consigliato” e “RAM totale necessaria” nella calcolatrice. Il primo lo usi per -Xmx. Il secondo dice quanta RAM deve esserci sul PC o sul server che noleggi. Io non do la risposta “8 GB bastano” senza distinguere questi due. Il numero di giocatori da solo non sostiene quella risposta.
Dieci giocatori non sono sempre lo stesso carico
Ritrovarsi allo spawn o sparpagliarsi sulla mappa
Nel numero di giocatori non scrivere gli account registrati, ma le persone che entreranno contemporaneamente in gioco. 10 persone che costruiscono una base intorno allo spawn guardano gli stessi chunk. Quando si aprono in quattro direzioni con l'elytra, le cose cambiano. Il server da un lato carica nuove aree, dall'altro genera terreno che nessuno ha ancora visto. I 10 dell'inizio della serata e i 10 della fine non lasciano lo stesso carico di RAM.
Quando faccio il calcolo, guardo come gioca il gruppo. Se tutti restano in una zona comune, l'opzione “Prevalentemente nella stessa zona” è appropriata. Se nel mondo survival ognuno si sparpaglia nella propria base, “In zone diverse / non lo so” è più vicina. Se anche l'esplorazione è intensa, segnala anche quella. La calcolatrice aggiunge il 25% al carico dei chunk. Alzare il numero di giocatori a venti tanto per sembrare prudenti nasconde da dove viene la differenza.
Controlla anche la distanza di visualizzazione e di simulazione dal file server.properties. La visualizzazione è l'area che invii al giocatore. La simulazione è l'ambiente in cui funzionano mob e eventi di gioco. All'apertura iniziale il modulo scrive 8 e 6 chunk. Nel calcolo per versioni moderne è determinante la distanza maggiore tra le due. Con visualizzazione 8, se porti la simulazione da 6 a 7, il risultato RAM può restare uguale. Per il carico dei tick non possiamo dire lo stesso. Nel profilo “1.17 e precedenti” lo strumento non tiene conto della distanza di simulazione.
Non leggere nemmeno il numero di plugin da solo
Per Paper, Purpur e Spigot inserisci il numero di plugin e il carico medio. In Fabric, Forge e NeoForge entra in gioco il numero di mod. In Vanilla la calcolatrice non usa nessuna di queste vecchie voci. Non credere che le opzioni “leggero / medio / pesante” siano il consumo di RAM misurato di ogni singolo plugin. 10 piccoli plugin di permessi e un plugin che renderizza la mappa in background non si mettono sulla stessa bilancia.
Quando installo un modpack, io cerco prima la raccomandazione di heap che il pacchetto fornisce per il server. Se la trovi, inseriscila nella parte “Usa la raccomandazione RAM del modpack”. Lo strumento non scenderà sotto quel numero. Non portare qui la raccomandazione scritta per il client. Stiamo parlando di due processi di gioco separati. Se non riesci a stimare il carico del pacchetto, guarda affiancati il risultato “medio” e “pesante”. La differenza tra loro è più utile del numero di mod per discutere se serve un pacchetto di hosting più grande.
Quale numero scrivere e dove nella calcolatrice?
Se stai allestendo un nuovo server, scegli “Calcola il fabbisogno di RAM”; se vuoi testare il PC che hai, scegli “Controlla il mio computer”. Il calcolo del server è lo stesso nei due percorsi. La cosa che più facilmente si salta sono i valori iniziali del modulo: Paper e 10 plugin sono già pronti. Se nell'installazione non c'è nessun plugin, azzera il 10. Poi scrivi la versione, la distanza di visualizzazione e, se serve, la distanza di simulazione come sul tuo server. Se hai fattorie intensive, redstone, mappa web o un mondo aggiuntivo in programma, passa alle impostazioni avanzate. Altrimenti non spuntarle solo perché compare la casella.
Il margine di lavoro all'apertura iniziale è del 25%. Nelle impostazioni avanzate puoi cambiarlo tra il 10% e il 100%. Nel momento in cui disattivi quelle impostazioni, togli i carichi aggiuntivi dal calcolo e riporti il margine al 25%. Se in una prova hai visto 6 GiB e in un'altra 9 GiB, guarda prima quali interruttori sono attivi. Annota anche gli input usati accanto al risultato. Così non dovrai tornare all'inizio quando cerchi la differenza.
8 GB equivalgono a circa 7,45 GiB. Se l'annuncio dice GB, inserisci GB nel modulo. Se una macchina virtuale o un container può usare solo una parte della RAM fisica, scrivi quella parte come limite. È facile rilassarsi con “ho scritto 8, è uscito 8”. Se hai scelto unità diverse sui due lati, il confronto si sposta fin dall'inizio. Soprattutto se il risultato è al limite di mezzo GiB.
I due risultati RAM sullo schermo
Non scambiare il valore dell'heap per la capacità della macchina
L'heap Java è il limite superiore che il server può usare per gli oggetti Java. La RAM totale fa spazio anche al sistema operativo e alla memoria che Java usa fuori dall'heap. La calcolatrice riserva almeno 1 GiB per questo uso aggiuntivo di Java. Se il 15% dell'heap è più alto, prende quello, poi arrotonda il risultato per eccesso a mezzo GiB. Se sullo schermo ci sono 3,5 GiB di heap, il -Xmx3584M che genera è altrettanto. Quando scegli un pacchetto di hosting, non credere che la cifra -Xmx sia la RAM del pacchetto.
Prova con questa configurazione: Paper per 10 giocatori, versione moderna, visualizzazione 8 chunk, simulazione 6 chunk, 10 plugin a carico medio. Con impostazioni avanzate e Chunky disattivati, lo strumento dà 3,5 GiB di heap e 6,5 GiB di RAM totale. Su una macchina da 8 GiB con Linux senza desktop, se non riservi un margine extra per altre applicazioni, il calcolo della memoria ci sta. Ora pensa a Windows e al client Minecraft sullo stesso PC. Se scrivi 1 GiB per altre applicazioni e 4 GiB per il client, il requisito totale sale a 13,5 GiB. Una macchina da 8 GiB qui non basta. Non abbiamo nemmeno aggiunto un plugin a Paper. Sono le altre attività che si mangiano la RAM.
Il controllo del computer mette un margine di sistema di 2 GiB per Linux senza desktop, 3 GiB per Linux con desktop e 4 GiB per Windows e macOS. In un container non aggiunge il margine del sistema operativo della macchina host. Se all'interno girano altri servizi, devi scrivere la loro RAM nella sezione “Altre applicazioni”. Quando la macchina non basta, la calcolatrice non riduce automaticamente l'heap. Mostra chiaramente dove manca.
Dal Vanilla al modpack
Ancora 10 giocatori e impostazioni 8/6 chunk. In Vanilla escono 3 GiB di heap e 6 GiB di RAM totale. Se aggiungi 10 plugin a carico medio a Paper, 3,5 e 6,5 GiB. Un esempio Fabric con 50 mod a carico medio mostra 5 e 8 GiB; un esempio Forge, 6 e 9 GiB. Non interpreto questi risultati come “Fabric è più leggero di Forge in ogni condizione”. Quando cambiano i mod dentro i pacchetti, cambia anche il confronto. I numeri mostrano solo come si comporta la calcolatrice con gli stessi input.
Nell'esempio Paper, se i giocatori restano nella stessa zona vedi 3 GiB di heap e 6 GiB di RAM totale. Se si sparpagliano ed esplorano nuovo terreno, 4 e 7 GiB. In entrambi gli scenari il numero di giocatori è 10. Perciò non mi fido da solo del consiglio “tanta RAM per giocatore”. Quando aggiungi fattorie intensive, mappa web, generazione di mondi personalizzata e due mondi attivi extra, lo stesso calcolo arriva a 6 GiB di heap e 9 GiB di RAM totale. Qui, invece di attivare tutti e quattro gli interruttori insieme e guardare il risultato, provali uno per uno. Allora vedrai quale carico fa saltare il calcolo.
Calcolo di Chunky e misurazione del server in funzione
In Chunky prima scegli il nome del mondo, il centro, la forma e il raggio. Nel quadrato l'area è 4 × raggio², nel cerchio π × raggio². Poiché un chunk occupa 16 × 16 blocchi, la calcolatrice divide l'area per 256. Se il centro è 0, 0 e il raggio del quadrato è 3000 blocchi, escono 140.625 chunk. Se metà è già generata, restano 70.313. Se porti il raggio a 6000, 562.500 chunk. Non perché aggiungi 3000 blocchi il lavoro raddoppia. L'area arriva a quadruplicarsi. Controlla ancora una volta il numero nella casella del raggio.
Quando attivi Chunky, la raccomandazione di heap del server Paper di esempio sale a 4 GiB e la sua RAM totale a 7 GiB. Per disco e tempo puoi fare una breve generazione di prova. Se inserisci 10.000 nuovi chunk, 256 MiB di crescita della cartella e 300 secondi, per i restanti 140.625 chunk vedrai circa 3,52 GiB di disco e 1,17 ore. Durante la generazione del mondo la velocità può non restare costante. Non includere nella misurazione i backup o i file della mappa web. Prima di inviare il comando, leggi anche il nome del mondo e il raggio. Uno zero in più si riflette sia sul tempo sia sul disco.
Hai aperto il server, i giocatori si sono sparpagliati, il TPS è calato. Non aumentare subito -Xmx. TPS è il numero di aggiornamenti di gioco al secondo, mentre MSPT è quanti millisecondi impiega un aggiornamento. Vedi entrambi con /spark tps. Se prendi un profilo Spark nel momento di carico, puoi capire se il tempo se ne va nella generazione del mondo o in un plugin. Leggi anche la pressione della garbage collection dai dati GC. In un server che si chiude con errore OOM, il limite di RAM e -Xmx sono la prima cosa da guardare. Se il TPS cala con memoria libera, prima apro l'output del profiler. Il nuovo pacchetto di RAM lo penso dopo.