Skip to content
Voltar ao Blog
Folia: Multithreading Regionalizado para Servidores

Folia: Multithreading Regionalizado para Servidores

ice
ice
@ice
Updated
1 visualizações
TL;DR:Folia é um fork multithreading do Paper que permite aos grandes servidores Minecraft distribuir trabalho entre núcleos de CPU. Construído para comunidades com 200+ jogadores espalhados pelo mundo, oferece ganhos reais de desempenho ao custo da compatibilidade de plugins.
<! - gh-polish-start - >
GitHub - Projeto da comunidade Minecraft

Folia (PaperMC/Folia)

Fork do Paper que adiciona multithreading regionalizado ao servidor dedicado.

Marcar no GitHub ↗
⭐ 4.228 estrelas💻 Shell📄 GPL-3.0
<! - gh-polish-end - >

Se você está executando um grande servidor Minecraft e vendo sua TPS cair sempre que alguém explora novos chunks ou você atinge o pico de jogadores, Folia pode ser a resposta que você procura. Este fork baseado em Paper reimagina completamente como servidores Minecraft lidam com computação, dividindo o mundo em regiões independentes, cada uma rodando em sua própria thread. Em vez de uma thread principal lutando para acompanhar tudo de uma vez, Folia permite que seus núcleos de CPU realmente façam trabalho em paralelo.

O que é Folia

Folia não é um mod. Não é um plugin. É uma reescrita completa do servidor Paper que remove o conceito de thread principal inteiramente. Em vez disso, chunks próximos são agrupados em "regiões", e cada região executa seu próprio loop de tick no thread pool. Pense nisso como dar a diferentes partes do seu mundo seu próprio processador independente, em vez de forçar uma thread a microgerenciar tudo.

A arquitetura importa porque muda como seu servidor escala.

Paper funciona bem em servidores com milhões de jogadores dentro de seu design single-threaded, mas uma vez que você chega ao próximo nível de escala - centenas de jogadores espalhados em um mundo enorme - gargalos emergem. Folia não tenta espremer mais de uma única thread. Em vez disso, muda fundamentalmente o problema.


Por que você quereria isso

Servidores grandes e espalhados se beneficiam mais. Redes Skyblock onde jogadores têm ilhas flutuantes espalhadas por dimensões, mundos de sobrevivência massivos, servidores RPG customizados com dungeons distribuídas - estes são os lugares onde Folia brilha. Se seus jogadores se aglomeram em uma área de spawn, você não verá os mesmos ganhos de desempenho. Mas para um SMP com 200+ jogadores onde as pessoas exploram em quadrantes diferentes, a diferença é substancial.

Devo mencionar de forma clara: isto não é um substituto direto.

Seus plugins precisam ser reescritos para o ambiente multithreading do Folia. Este é o custo real. Mas se você está na escala onde está considerando isso, seu ecossistema de plugins é provavelmente customizado de qualquer forma. Plugins padrão do Paper que não assumem uma thread principal quebrarão imediatamente sob Folia.

O ganho é genuíno porém. Com a configuração adequada, você está olhando para melhorias reais de desempenho que escalam com sua contagem de núcleos de CPU. Isto não é alcançável no Paper padrão.


Instalação e configuração básica

Primeiro, pegue a build mais recente na página de downloads do PaperMC. A partir de 2026, Folia suporta versões modernas do Minecraft (1.20.4 e posterior). Baixe o arquivo jar para seu diretório de servidor:

<! - gh-code-start - >
bash
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 - >

A seguir, você precisa aceitar a EULA em seu arquivo eula.txt. Inicie o servidor uma vez para gerar seus arquivos de configuração:

<! - gh-code-start - >
bash
java -Xmx30G -Xms30G -jar folia.jar nogui
<! - gh-code-end - >

Interrompa (isso criará o config folia.yml), e então você entra no trabalho real: configuração de thread. Não é apenas "definir mais threads e pronto". A documentação do PaperMC recomenda pré-gerar seu mundo antes de mover para produção, o que reduz significativamente a sobrecarga de carregamento de chunks.


Configuração de thread: o desafio real

É aqui que a maioria das pessoas fica confusa. Seu folia.yml tem uma configuração `threaded-regions.threads`. Não maximize apenas. A diretriz do próprio projeto: aloque threads para netty IO (cerca de 4 por 200-300 jogadores), threads de IO do sistema de chunks (cerca de 3 por 200-300 jogadores), workers do sistema de chunks se pré-gerados (cerca de 2 por 200-300 jogadores), e depois use os núcleos restantes até 80% da alocação total para threads de tick.

Em uma máquina com 32 núcleos servindo 500 jogadores, você alocaria aproximadamente:

  • Netty IO: 8 threads
  • Chunk system IO: 6 threads
  • Chunk system workers: 4 threads
  • Tick threads: núcleos restantes até 80% (cerca de 10 threads)

Você não deixa 100% de alocação porque plugins e tarefas de background inesperadas spawnarão suas próprias threads e derrubarão o servidor. O teto de 80% é uma fronteira de segurança que realmente importa.

Mesmo assim, este é um ponto de partida. Monitore seu uso real de threads sob carga e ajuste. O arquivo folia.yml tem comentários detalhados para cada opção.


Recursos principais que funcionam

Isolamento de região. Cada região faz tick independentemente em 20 TPS. Um spike de lag em uma região não cascata para outras. Se seu sistema de dungeon é mal otimizado, não vai prejudicar o desempenho de sua área de spawn.

Escalamento apropriado de thread. Diferente da abordagem plugin-threadpool do Paper (que ainda tem gargalo em operações críticas de tick), as regiões do Folia executam lógica de tick em paralelo. Mais núcleos realmente traduz em mais processamento de tick. O escalamento não é linear, mas é real.

Carregamento assíncrono de chunks. IO de chunk acontece fora das threads de região. Você não vai ter os congelamentos aleatórios que servidores single-threaded experienciam quando picos de leitura de armazenamento acontecem.

Há também suporte nativo para otimização de chunks server-side, cache de chunks pré-gerados, e limites de memória configuráveis por região. Honestamente, a profundidade de recursos é impressionante se você estiver disposto a cavar na documentação.


O que quebrará e como lidar

A maioria dos plugins assume que estão em uma thread principal e que podem ler/escrever estado do mundo com segurança sem sincronização. Eles estão errados no Folia. Se um plugin faz algo como "verificar se bloco X é pedra, depois definir como ar", essa race condition pode acontecer entre threads de uma forma que nunca aconteceria no Paper. Espere falhas de plugin.

Alguns detalhes:

  • Teleportação entre regiões envolve complexidade adicional e pode causar deadlocks se plugins não forem cuidadosos
  • Verificações de borda do mundo são conscientes de região e podem se comportar diferente do que você espera
  • Timers e tarefas agendadas precisam ser region-safe para evitar corrupção
  • Rastreamento de entidade entre limites de região requer atualizações de plugin

A documentação do Folia lista padrões incompatíveis explicitamente. Se você está avaliando plugins para compatibilidade, verifique se eles manipulam diretamente lógica de tick ou assumem acesso single-threaded a dados de chunk.


Quando Folia faz sentido

Você tem uma máquina com 16+ núcleos. Seu servidor vai atingir 200+ jogadores simultâneos regularmente. Seus jogadores estão espalhados geograficamente (não todos em spawn). Você tem infraestrutura de plugin customizada ou está disposto a portar plugins existentes.

Essas quatro condições? Você é um candidato.

Você está rodando 50 jogadores em uma VPS com 8 núcleos? Fique com Paper. Os ganhos não justificam o incômodo de compatibilidade. Você está rodando um SMP com 100 jogadores onde todos ficam em spawn? Folia ajuda, mas não tão dramaticamente quanto em um servidor espalhado.

Mas se você está construindo a próxima geração de comunidades Minecraft multiplayer sérias, Folia é onde o teto de desempenho é realmente mais alto. Os jogadores em skins como adderall_abuser's, ironmouse's, e outros membros ativos da comunidade em servidores massivos já estão explorando este espaço. Confira comunidades de streaming e grandes projetos de sobrevivência no Modrinth - você verá Folia aparecendo cada vez mais.


Alternativas dignas de consideração

Paper. Ainda o padrão ouro para a maioria dos servidores. Estável, bem compreendido, ecossistema de plugins enorme. Se Folia parece excessivo, recursos de otimização do Paper (carregamento assíncrono de chunks, redução de ticks de IA de entidade, etc.) podem ser suficientes.

Purpur. Um fork do Paper com otimizações adicionais por-jogador. Melhor para servidores onde experiência do jogador varia muito (alguns AFK, alguns explorando ativamente). Menos mudança de arquitetura que Folia, ganhos de desempenho mais focados.

Fabric Server. Se você precisa de suporte a mods (não plugins), o ecossistema Fabric é na verdade bem sólido para servidores agora. Não multithreaded da mesma forma, mas leve e rápido.

A verdade honesta: Folia é especializado. É para um problema específico em uma escala específica. Para todos os outros, Paper com configuração reflexiva ainda é a escolha certa.

<! - gh-polish-start - > <! - gh-polish-end - >