
Folia: Come il Multithreading Regionalizzato Trasforma il Tu
Folia (PaperMC/Folia)
Fork di Paper che aggiunge il multithreading regionalizzato al server dedicato.
Se stai gestendo un grande server Minecraft e vedi il TPS crollare ogni volta che qualcuno esplora nuovi chunk o raggiungi il picco di giocatori, Folia potrebbe essere la risposta che stai cercando. Questa fork basata su Paper reimmagina completamente come i server Minecraft gestiscono il calcolo dividendo il mondo in regioni indipendenti, ognuna in esecuzione su un proprio thread. Invece di un singolo thread principale che fatica a stare al passo con tutto in una volta, Folia consente ai tuoi core della CPU di fare effettivamente lavoro parallelo.
Cos'è Folia
Folia non è una mod. Non è un plugin. È una riscrittura da zero del server Paper che elimina completamente il concetto di thread principale. Invece, i chunk vicini vengono raggruppati in "regioni", e ogni regione esegue il suo proprio ciclo di tick nel pool di thread. Pensala come dare a diverse parti del tuo mondo il loro processore indipendente piuttosto che forzare un thread a microgestire tutto.
L'architettura è importante perché cambia come scala il tuo server.
Paper gestisce bene i server di milioni di giocatori nel suo design single-thread, ma una volta raggiunto il prossimo livello di scala - centinaia di giocatori distribuiti in un enorme mondo - emergono i colli di bottiglia. Folia non cerca di spremere di più da un singolo thread. Invece, cambia fondamentalmente il problema.
Perché Vorresti Questo
I server grandi e dispersi beneficiano di più. Le reti Skyblock dove i giocatori hanno isole galleggianti sparse tra le dimensioni, enormi mondi di sopravvivenza, server RPG personalizzati con dungeon distribuiti - questi sono i luoghi dove Folia brilla. Se i tuoi giocatori si raggruppano in un'area di spawn, non vedrai gli stessi guadagni di prestazioni. Ma per un SMP con 200+ giocatori dove le persone stanno esplorando in quadranti diversi, la differenza è sostanziale.
Devo menzionare sin da subito: questo non è un sostituto diretto.
I tuoi plugin devono essere riscritti per l'ambiente multithreading di Folia. Questo è il vero costo. Ma se sei alla scala in cui lo stai considerando, il tuo ecosistema di plugin è probabilmente personalizzato comunque. I plugin Paper standard che non assumono un thread principale si romperanno immediatamente con Folia.
Il payoff è genuino però. Con la giusta configurazione, stai guardando a miglioramenti di performance reali che si scalano con il numero di core della tua CPU. Questo non è realizzabile con Paper standard.
Installazione e Configurazione di Base
Per primo, scarica l'ultima build dalla pagina dei download di PaperMC. A partire dal 2026, Folia supporta le versioni moderne di Minecraft (1.20.4 e successive). Scarica il file jar nella tua directory del server:
<! - gh-code-start - >wget https://api.papermc.io/v2/projects/folia/versions/latest/builds/latest/downloads/folia-latest.jar
mv folia-latest.jar folia.jar<! - gh-code-end - >
Successivamente, dovrai accettare l'EULA nel tuo file eula.txt. Avvia il server una volta per generare i tuoi file di configurazione:
<! - gh-code-start - >java -Xmx30G -Xms30G -jar folia.jar nogui<! - gh-code-end - >
Fermalo (creerà il config folia.yml), quindi entri nel lavoro vero e proprio: la configurazione dei thread. Non è solo "imposta più thread e vai". La documentazione di PaperMC consiglia di pre-generare il tuo mondo prima di passare alla produzione, il che riduce significativamente l'overhead di caricamento dei chunk.
Configurazione dei Thread: La Vera Sfida
Questo è dove la maggior parte delle persone si confonde. Il tuo folia.yml ha un'impostazione `threaded-regions.threads`. Non massimizzarla semplicemente. La linea guida dal progetto stesso: alloca thread per netty IO (circa 4 per 200-300 giocatori), thread IO del sistema di chunk (circa 3 per 200-300 giocatori), worker del sistema di chunk se pre-generati (circa 2 per 200-300 giocatori), quindi usa i core rimanenti fino all'80% di allocazione totale per i thread di tick.
Su una macchina con 32 core che serve 500 giocatori, allocheresti approssimativamente:
- Netty IO: 8 thread
- Chunk system IO: 6 thread
- Chunk system workers: 4 thread
- Thread di tick: core rimanenti fino all'80% (circa 10 thread)
Non lasci l'allocazione al 100% perché i plugin e i task di background imprevisti creeranno i loro propri thread e faranno crashare il server. Il soffitto dell'80% è un confine di sicurezza che ha un vero impatto.
Anche allora, questo è un punto di partenza. Monitora il tuo utilizzo effettivo di thread sotto carico e regola. Il file folia.yml ha commenti dettagliati per ogni opzione.
Caratteristiche Chiave che Funzionano
Isolamento delle regioni. Ogni regione tick indipendentemente a 20 TPS. Un picco di lag in una regione non si estende alle altre. Se il tuo sistema di dungeon è scarsamente ottimizzato, non degraderà le prestazioni dell'area di spawn.
Corretta scalabilità dei thread. A differenza dell'approccio plugin-threadpool di Paper (che ancora imbottiglia le operazioni critiche di tick), le regioni di Folia eseguono la logica di tick in parallelo. Più core si traduce effettivamente in più elaborazione di tick. La scalabilità non è lineare, ma è reale.
Caricamento asincrono dei chunk. L'I/O dei chunk avviene al di fuori dei thread della regione. Non avrai i blocchi casuali che i server single-thread sperimentano quando le letture di archiviazione aumentano.
C'è anche supporto nativo per l'ottimizzazione dei chunk lato server, il caching dei chunk pre-generati e i limiti di memoria configurabili per regione. Onestamente, la profondità delle funzionalità è impressionante se sei disposto a scavare nella documentazione.
Cosa Si Romperà e Come Gestirlo
La maggior parte dei plugin assume che siano su un thread principale e che possano leggere/scrivere lo stato del mondo in sicurezza senza sincronizzazione. Hanno torto con Folia. Se un plugin fa qualcosa come "verifica se il blocco X è pietra, quindi impostalo come aria", quella race condition potrebbe verificarsi tra i thread in un modo che non accadrebbe mai con Paper. Aspettati guasti ai plugin.
Alcuni dettagli:
- La teletrasportazione tra regioni comporta una complessità aggiuntiva e può causare deadlock se i plugin non stanno attenti
- I controlli dei confini del mondo sono consapevoli della regione e potrebbero comportarsi diversamente da quanto ti aspetti
- I timer e i task programmati devono essere region-safe per evitare la corruzione
- Il tracciamento delle entità attraverso i confini delle regioni richiede aggiornamenti dei plugin
La documentazione di Folia elenca esplicitamente i pattern incompatibili. Se stai valutando i plugin per la compatibilità, verifica se manipolano direttamente la logica di tick o assumono l'accesso single-thread ai dati dei chunk.
Quando Folia Ha Senso
Hai una macchina con 16+ core. Il tuo server raggiungerà regolarmente 200+ giocatori concorrenti. I tuoi giocatori sono geograficamente dispersi (non tutti nello spawn). Hai un'infrastruttura di plugin personalizzata o sei disposto a portare i plugin esistenti.
Queste quattro condizioni? Sei un candidato.
Stai eseguendo 50 giocatori su un VPS con 8 core? Rimani con Paper. I guadagni non giustificheranno il mal di testa della compatibilità. Stai eseguendo un SMP da 100 giocatori dove tutti penzolano nello spawn? Folia aiuta, ma non così drasticamente come farebbe su un server distribuito.
Ma se stai costruendo la prossima generazione di serie comunità multiplayer di Minecraft, Folia è dove il soffitto di performance è effettivamente più alto. I giocatori con skin come quelle di adderall_abuser, ironmouse e altri membri attivi della comunità su server massicci stanno già esplorando questo spazio. Guarda le comunità di streaming e i grandi progetti di sopravvivenza su Modrinth - vedrai Folia apparire più spesso.
Alternative Degne di Considerazione
Paper. Ancora lo standard aureo per la maggior parte dei server. Stabile, ben compreso, enorme ecosistema di plugin. Se Folia sembra eccessivo, le funzionalità di ottimizzazione di Paper (caricamento asincrono dei chunk, riduzione dei tick dell'IA dell'entità, ecc.) potrebbero essere sufficienti.
Purpur. Una fork di Paper con ottimizzazioni aggiuntive per giocatore. Migliore per i server in cui l'esperienza del giocatore varia notevolmente (alcuni AFK, alcuni esplorando attivamente). Meno cambiamento di architettura di Folia, guadagni di prestazioni più mirati.
Fabric Server. Se hai bisogno del supporto delle mod (non plugin), l'ecosistema Fabric è in realtà abbastanza solido per i server ora. Non multithreading allo stesso modo, ma leggero e veloce.
La verità onesta: Folia è specializzato. È per un problema specifico a una scala specifica. Per tutti gli altri, Paper con una configurazione ponderata è ancora la scelta giusta.
<! - gh-polish-start - > <! - gh-polish-end - >

