Skip to content
Passer au contenu
Retour au Blog
Folia - Multithreading régionalisé pour votre serveur

Folia - Multithreading régionalisé pour votre serveur

Alexandru Maftei
Alexandru Maftei
@ice
Mis à jour
68 vues
Réponse rapide :Folia est un fork de Paper qui remplace le thread principal unique par des régions indépendantes, chacune tournant sur son propre thread. C'est fait pour les grands serveurs avec des joueurs dispersés, et vos plugins Paper existants devront être réécrits pour fonctionner avec.
TL;DR :Folia est un fork multithreadé de Paper qui permet aux grands serveurs Minecraft de distribuer le travail sur les cœurs du processeur. Il est conçu pour les communautés de 200+ joueurs où les joueurs sont dispersés, offrant de vrais gains de performance au prix de la compatibilité des plugins.
GitHub - Projet communautaire Minecraft

Folia (PaperMC/Folia)

Fork de Paper qui ajoute le multithreading régionalisé au serveur dédié.

Ajouter une étoile sur GitHub ↗
⭐ 4 228 étoiles💻 Shell📜 GPL-3.0

Si vous administrez un grand serveur Minecraft et voyez votre TPS chuter chaque fois que quelqu'un explore de nouveaux chunks ou lors des pics de joueurs, Folia pourrait être la réponse que vous cherchiez. Ce fork basé sur Paper réimagine complètement la façon dont les serveurs Minecraft gèrent le calcul en divisant le monde en régions indépendantes, chacune fonctionnant sur son propre thread. Au lieu d'un seul thread principal qui peine à tout gérer à la fois, Folia permet à vos cœurs de processeur de faire du travail réellement parallèle.

Qu'est-ce que Folia

Folia n'est pas un mod. Ce n'est pas un plugin. C'est une réécriture complète du serveur Paper qui supprime entièrement le concept de thread principal. À la place, les chunks proches sont regroupés en "régions", et chaque région exécute sa propre boucle de tick sur le pool de threads. Pensez-y comme donner à différentes parties de votre monde leur propre processeur indépendant plutôt que de forcer un seul thread à tout gérer.

L'architecture a de l'importance car elle change la façon dont votre serveur évolue.

Paper gère bien les serveurs avec des millions de joueurs dans sa conception monotâche, mais une fois que vous atteignez ce prochain niveau d'échelle - des centaines de joueurs dispersés dans un monde énorme - des goulots d'étranglement apparaissent. Folia n'essaie pas d'extraire plus d'un seul thread. Au lieu de cela, il change fondamentalement le problème.


Pourquoi vous voudriez ceci

Les grands serveurs dispersés bénéficient le plus. Les réseaux Skyblock où les joueurs ont des îles flottantes éparpillées dans les dimensions, les mondes de survie massifs, les serveurs RPG personnalisés avec des donjons distribués - c'est là que Folia brille. Si vos joueurs se regroupent dans une zone de spawn, vous ne verrez pas les mêmes gains de performance. Mais pour un SMP de 200+ joueurs où les gens explorent dans différents quadrants, la différence est considérable.

Je dois le mentionner dès le départ : ce n'est pas un remplacement direct.

Vos plugins doivent être réécrits pour l'environnement multithreadé de Folia. C'est le vrai coût. Mais si vous êtes à l'échelle où vous le considérez, votre écosystème de plugins est probablement déjà personnalisé. Les plugins standard de Paper qui ne supposent pas un thread principal vont se casser immédiatement sous Folia.

La récompense est véritable cependant. Avec une configuration appropriée, vous obtenez de véritables améliorations de performance qui s'adaptent à votre nombre de cœurs CPU. Ce n'est pas réalisable avec Paper standard.


Installation et configuration de base

Tout d'abord, téléchargez la dernière version depuis la page de téléchargement de PaperMC. Depuis 2026, Folia supporte les versions modernes de Minecraft (1.20.4 et versions ultérieures). Téléchargez le fichier jar dans votre répertoire serveur :

bash
wget https://api.papermc.io/v2/projects/folia/versions/latest/builds/latest/downloads/folia-latest.jar
mv folia-latest.jar folia.jar

Ensuite, vous devez accepter l'EULA dans votre fichier eula.txt. Démarrez le serveur une fois pour générer vos fichiers de configuration :

bash
java -Xmx30G -Xms30G -jar folia.jar nogui

Arrêtez-le (il créera la configuration folia.yml), puis vous entrez dans le vrai travail : la configuration des threads. Ce n'est pas juste "augmentez les threads et c'est bon". La documentation de PaperMC recommande de pré-générer votre monde avant de passer à la production, ce qui réduit considérablement la surcharge de chargement des chunks.


Configuration des threads - Le vrai défi

C'est là que la plupart des gens se trompent. Votre folia.yml a un paramètre `threaded-regions.threads`. Ne le mettez pas juste au maximum. La directive du projet lui-même : allouez des threads pour netty IO (environ 4 pour 200-300 joueurs), threads IO du système de chunks (environ 3 pour 200-300 joueurs), workers du système de chunks si pré-générés (environ 2 pour 200-300 joueurs), puis utilisez les cœurs restants jusqu'à 80 % d'allocation totale pour les threads de tick.

Sur une machine avec 32 cœurs servant 500 joueurs, vous alloueriez approximativement :

  • Netty IO : 8 threads
  • IO du système de chunks : 6 threads
  • Workers du système de chunks : 4 threads
  • Threads de tick : cœurs restants jusqu'à 80 % (environ 10 threads)

Vous ne laissez pas 100 % d'allocation car les plugins et les tâches de fond inattendues engendreront leurs propres threads et planteront le serveur. Le plafond de 80 % est une limite de sécurité qui a vraiment de l'importance.

Même alors, c'est un point de départ. Surveillez votre utilisation réelle des threads sous charge et ajustez. Le fichier folia.yml contient des commentaires détaillés pour chaque option.


Fonctionnalités principales qui fonctionnent

Isolation des régions. Chaque région fait un tick indépendamment à 20 TPS. Un pic de lag dans une région ne se propage pas aux autres. Si votre système de donjon est mal optimisé, il ne ruinera pas la performance de votre zone de spawn.

Mise à l'échelle appropriée des threads. Contrairement à l'approche de thread pool de plugins de Paper (qui met toujours en goulet d'étranglement les opérations critiques de tick), les régions de Folia exécutent la logique de tick en parallèle. Plus de cœurs se traduit réellement par plus de traitement de ticks. La mise à l'échelle n'est pas linéaire, mais elle est réelle.

Chargement de chunks asynchrone. L'I/O des chunks se fait en dehors des threads de région. Vous n'aurez pas les gels aléatoires que les serveurs monotâches rencontrent quand les lectures de stockage augmentent.

Il y a aussi un support natif pour l'optimisation des chunks côté serveur, la mise en cache des chunks pré-générés, et les limites de mémoire configurables par région. Honnêtement, la profondeur des fonctionnalités est impressionnante si vous êtes disposé à creuser dans la documentation.


Ce qui va casser et comment le gérer

La plupart des plugins supposent qu'ils sont sur un thread principal et qu'ils peuvent lire/écrire l'état du monde en toute sécurité sans synchronisation. Ils ont tort sur Folia. Si un plugin fait quelque chose comme "vérifier si le bloc X est de la pierre, puis le mettre en air", cette condition de course peut se produire sur les threads d'une façon qui ne se produirait jamais sur Paper. Attendez-vous à des échecs de plugins.

Quelques détails :

  • La téléportation entre régions implique une complexité supplémentaire et peut causer des interblocages si les plugins ne font pas attention
  • Les vérifications des bordures du monde sont conscientes des régions et peuvent se comporter différemment que prévu
  • Les minuteurs et les tâches programmées doivent être sûrs pour les régions pour éviter la corruption
  • Le suivi des entités à travers les limites des régions nécessite des mises à jour de plugins

Les docs de Folia listent les modèles incompatibles explicitement. Si vous évaluez les plugins pour la compatibilité, vérifiez s'ils manipulent directement la logique de tick ou supposent un accès monotâche aux données des chunks.


Quand Folia a du sens

Vous avez une machine avec 16+ cœurs. Votre serveur va régulièrement atteindre 200+ joueurs concurrents. Vos joueurs sont géographiquement dispersés (pas tous au spawn). Vous avez soit une infrastructure de plugins personnalisée, soit vous êtes disposé à porter les plugins existants.

Ces quatre conditions ? Vous êtes un candidat.

Vous exécutez 50 joueurs sur un VPS avec 8 cœurs ? Restez avec Paper. Les gains ne justifieront pas le problème de compatibilité. Vous exécutez un SMP de 100 joueurs où tout le monde traîne au spawn ? Folia aide, mais pas aussi dramatiquement que sur un serveur dispersé.

Mais si vous construisez la prochaine génération de communautés Minecraft multijoueur sérieuses, Folia est l'endroit où le plafond de performance est réellement plus élevé. Les joueurs avec des skins comme celui d'adderall_abuser, celui d'ironmouse, et d'autres membres actifs de la communauté sur des serveurs massifs explorent déjà cet espace. Consultez les communautés de streaming et les grands projets de survie sur Modrinth - vous verrez Folia apparaître plus souvent.


Alternatives dignes de considération

Paper. Toujours l'étalon-or pour la plupart des serveurs. Stable, bien compris, énorme écosystème de plugins. Si Folia semble excessif, les fonctionnalités d'optimisation de Paper (chargement de chunks asynchrone, ticks d'IA d'entité réduits, etc.) pourraient suffire.

Purpur. Un fork de Paper avec des optimisations supplémentaires par joueur. Mieux pour les serveurs où l'expérience des joueurs varie énormément (certains AFK, certains explorant activement). Moins de changement d'architecture que Folia, des gains de performance plus ciblés.

Fabric Server. Si vous avez besoin du support des mods (pas des plugins), l'écosystème Fabric est en fait assez solide pour les serveurs maintenant. Pas multithreadé de la même façon, mais léger et rapide.

La vérité honnête : Folia est spécialisé. C'est pour un problème spécifique à une échelle spécifique. Pour tout le monde d'autre, Paper avec une configuration réfléchie est toujours le bon choix.

À propos de l auteur
Alexandru Maftei
Alexandru MafteiRédacteur principal

Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.

Partage avec tes amis !

Questions fréquentes

Qu'est-ce que Folia et en quoi est-il différent de Paper?
Folia est une réécriture complète du serveur Paper qui supprime le thread principal unique. Les chunks proches sont regroupés en régions, et chaque région exécute sa propre boucle de tick sur le pool de threads. Vos cœurs CPU font du travail réellement parallèle, ce que Paper standard ne peut pas faire.
Mes plugins Paper fonctionneront-ils avec Folia?
Non. Les plugins standard de Paper qui supposent un thread principal vont se casser immédiatement sous Folia. Ils doivent être réécrits pour l'environnement multithreadé de Folia avant de pouvoir être utilisés.
Quel type de serveur bénéficie vraiment de Folia?
Les grands serveurs avec des joueurs dispersés dans de vastes zones: réseaux Skyblock, mondes de survie massifs, serveurs RPG avec des donjons distribués. Si vos joueurs se regroupent dans une seule zone de spawn, vous ne verrez pas les mêmes gains de performance.
Comment configurer les threads dans Folia?
Dans folia.yml, le paramètre threaded-regions.threads contrôle les threads de tick. Ne le mettez pas au maximum. Sur une machine de 32 cœurs pour 500 joueurs, comptez environ 8 threads pour Netty IO, 6 pour l'IO des chunks, 4 pour les workers de chunks, et environ 10 threads de tick. Le plafond recommandé est 80% de vos cœurs au total, pour garder de la marge pour les tâches de fond.
Comment télécharger et installer Folia?
Téléchargez la dernière version depuis la page de téléchargement de PaperMC. Depuis 2026, Folia supporte Minecraft 1.20.4 et les versions ultérieures. Démarrez le serveur une fois pour générer folia.yml, arrêtez-le, puis configurez vos threads avant de passer en production.
Qu'est-ce que l'isolation des régions apporte concrètement?
Chaque région fait un tick indépendamment à 20 TPS. Un pic de lag dans une région ne se propage pas aux autres. Un donjon mal optimisé ne ruinera pas la performance de votre zone de spawn.

Commentaires

Aucun commentaire pour le moment. Soyez le premier à partager votre avis !

We use cookies to improve your experience. By continuing to use this site, you agree to our use of cookies. Read our Privacy Policy