Skip to content
Powrót do bloga
Folia: Jak Regionalizowana Wielowątkowość Transformuje Twój

Folia: Jak Regionalizowana Wielowątkowość Transformuje Twój

ice
ice
@ice
Updated
1 wyświetleń
TL;DR:Folia to wielowątkowy fork Papera, który pozwala dużym serwerom Minecraft rozprowadzać pracę na rdzenie procesora. Został stworzony dla społeczności z 200+ graczami, gdzie gracze rozmieszczeni są po całym świecie, oferując rzeczywiste wzrosty wydajności za cenę kompatybilności pluginów.
<! - gh-polish-start - >
GitHub - Projekt społeczności Minecraft

Folia (PaperMC/Folia)

Fork Papera, który dodaje regionalizowaną wielowątkowość do dedykowanego serwera.

Gwiazdka na GitHubie ⤴
⭐ 4,228 stars💻 Shell📄 GPL-3.0
<! - gh-polish-end - >

Jeśli zarządzasz dużym serwerem Minecraft i widzisz, jak TPS spada, gdy gracze eksplorują nowe chunki lub gdy liczba graczy osiąga szczyt, Folia może być odpowiedzią, której szukałeś. Ten fork Papera całkowicie zmienia sposób, w jaki serwery Minecraft przetwarzają obliczenia, dzieląc świat na niezależne regiony, każdy działający na własnym wątku. Zamiast jednego głównego wątku próbującego nadążyć za wszystkim, Folia pozwala twoim rdzeniom procesora rzeczywiście pracować równolegle.

Czym Jest Folia

Folia nie jest modem. Nie jest to plugin. To przepisanie od podstaw serwera Paper, które całkowicie usuwa koncepcję głównego wątku. Zamiast tego pobliskie chunki są grupowane w "regiony", a każdy region ma własną pętlę ticku w puli wątków. Możesz myśleć o tym jako o daniu różnym częściom swojego świata ich własnego niezależnego procesora, zamiast zmuszania jednego wątku do kontrolowania wszystkiego.

Architektura ma znaczenie, ponieważ zmienia sposób, w jaki twój serwer się skaluje.

Paper obsługuje serwery o milionach graczy w ramach jego jednowątkowego projektu, ale kiedy osiągniesz następny poziom skali - setki graczy rozmieszczonych na ogromnym świecie - pojawiają się wąskie gardła. Folia nie próbuje wycisnąć więcej z jednego wątku. Zamiast tego zasadniczo zmienia podejście do problemu.


Dlaczego Byś To Chciał

Duże rozproszone serwery zyskują najbardziej. Sieci Skyblock, gdzie gracze mają pływające wyspy rozrzucone na wymiarach, ogromne światy survival, niestandardowe serwery RPG z rozproszonymi dungeonami - to miejsca, gdzie Folia się wyróżnia. Jeśli twoi gracze skupiają się w jednym obszarze spawnu, nie zobaczysz takich samych wzrostów wydajności. Ale dla SMP-u z 200+ graczami, gdzie ludzie eksplorują w różnych kwadrantach, różnica jest znaczna.

Powinienem wspomnieć od razu: to nie jest bezpośrednia zamiana.

Twoje pluginy muszą być przepisane dla wielowątkowego środowiska Folia. To jest rzeczywisty koszt. Ale jeśli jesteś na skali, gdzie to rozważasz, twój ekosystem pluginów jest prawdopodobnie niestandardowy. Standardowe pluginy Paper, które nie zakładają głównego wątku, natychmiast się zepsują na Folii.

Jednak spłata jest rzeczywista. Przy prawidłowej konfiguracji patrzysz na rzeczywiste ulepszenia wydajności, które skalują się wraz z liczbą rdzeni procesora. To nie jest osiągalne na standardowym Paperze.


Instalacja i Podstawowa Konfiguracja

Najpierw pobierz najnowszą kompilację ze strony pobierania PaperMC. Od 2026 roku Folia obsługuje nowoczesne wersje Minecraft (1.20.4 i nowsze). Pobierz plik jar do katalogu serwera:

<! - 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 - >

Następnie musisz zaakceptować EULA w pliku eula.txt. Uruchom serwer raz, aby wygenerować pliki konfiguracyjne:

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

Zatrzymaj go (utworzy plik konfiguracyjny folia.yml), a następnie wchodzisz w rzeczywistą pracę: konfigurację wątków. To nie jest po prostu "ustaw więcej wątków i gotowe". Dokumentacja PaperMC zaleca wstępne wygenerowanie świata przed przejściem do produkcji, co znacznie zmniejsza narzut ładowania chunków.


Konfiguracja Wątków: Rzeczywiste Wyzwanie

To jest miejsce, gdzie większość ludzi się myli. Twój plik folia.yml ma ustawienie `threaded-regions.threads`. Nie po prostu go maksymalizuj. Wytyczne z samego projektu: przydziel wątki dla netty IO (około 4 na 200-300 graczy), wątki systemowe IO chunków (około 3 na 200-300 graczy), procesy systemu chunków dla wstępnie wygenerowanych (około 2 na 200-300 graczy), a następnie użyj pozostałych rdzeni do 80% całkowitego przydzielenia dla wątków ticku.

Na maszynie z 32 rdzeniami obsługującą 500 graczy, przydzieliłbyś mniej więcej:

  • Netty IO: 8 wątków
  • Chunk system IO: 6 wątków
  • Chunk system workers: 4 wątki
  • Tick threads: pozostałe rdzenie do 80% (około 10 wątków)

Nie zostawiasz 100% alokacji, ponieważ pluginy i nieoczekiwane zadania w tle będą generować własne wątki i wysadzą serwer. Limit 80% to granica bezpieczeństwa, która rzeczywiście ma znaczenie.

Nawet wtedy, to jest punkt wyjścia. Monitoruj rzeczywiste użycie wątków pod obciążeniem i dostosowuj. Plik folia.yml ma szczegółowe komentarze do każdej opcji.


Kluczowe Funkcje, Które Działają

Izolacja regionów. Każdy region tickuje niezależnie przy 20 TPS. Skok lagowania w jednym regionie nie rozprzestrzenia się na inne. Jeśli twój system dungeonów jest źle optymalizowany, nie obniży wydajności twojego obszaru spawnu.

Prawidłowe skalowanie wątków. W przeciwieństwie do podejścia Paper plugin-threadpool (które nadal ma wąskie gardło w operacjach krytycznych dla ticku), regiony Folia uruchamiają logikę ticku równolegle. Więcej rdzeni rzeczywiście przełożyło się na więcej przetwarzania ticku. Skalowanie nie jest liniowe, ale jest rzeczywiste.

Asynchroniczne ładowanie chunków. I/O chunków odbywa się poza wątkami regionów. Nie będziesz otrzymywać losowych zawieszań, które serwery jednowątkowe doświadczają, gdy odczyty z dysku gwałtownie wzrastają.

Istnieje również natywna obsługa optymalizacji chunków po stronie serwera, buforowania wstępnie wygenerowanych chunków i konfigurowalnych limitów pamięci na region. Szczerze mówiąc, głębokość funkcji jest imponująca, jeśli chcesz zagłębić się w dokumentację.


Co Się Zepsuje i Jak Sobie z Tym Radzić

Większość pluginów zakłada, że działają na głównym wątku i mogą bezpiecznie czytać/pisać stan świata bez synchronizacji. To jest błędem na Folii. Jeśli plugin robi coś takiego jak "sprawdź, czy blok X jest kamieniem, potem ustaw go na powietrze", ta sytuacja wyścigu może się pojawić na wątkach w sposób, w jaki nigdy by się to nie stało na Paperze. Przygotuj się na awarie pluginów.

Kilka szczegółów:

  • Teleportacja między regionami wiąże się z dodatkową złożonością i może powodować zakleszczeń, jeśli pluginy nie będą ostrożne
  • Kontrole granicy świata są świadome regionów i mogą zachowywać się inaczej niż się spodziewasz
  • Timery i zaplanowane zadania muszą być bezpieczne dla regionów, aby uniknąć uszkodzenia
  • Śledzenie jednostek na granicach regionów wymaga aktualizacji pluginów

Dokumentacja Folia wyraźnie wymienia niezgodne wzorce. Jeśli oceniasz pluginy pod kątem kompatybilności, sprawdź, czy bezpośrednio manipulują logiką ticku czy zakładają jednowątkowy dostęp do danych chunków.


Kiedy Folia Ma Sens

Masz maszynę z 16+ rdzeniami. Twój serwer będzie regularnie osiągał 200+ jednoczesnych graczy. Twoi gracze są geograficznie rozrzuceni (nie wszyscy na spawnie). Albo masz niestandardową infrastrukturę pluginów, albo jesteś gotów przenieść istniejące pluginy.

Te cztery warunki? Jesteś kandydatem.

Prowadzisz 50 graczy na VPS-ie z 8 rdzeniami? Zostań przy Paperze. Zyski nie będą warte problemów z kompatybilnością. Prowadzisz 100-osobowy SMP, gdzie wszyscy czekają na spawnie? Folia pomaga, ale nie tak dramatycznie jak na rozrzuconym serwerze.

Ale jeśli budujesz następne pokolenie poważnych społeczności wieloosobowych Minecraft, Folia to miejsce, gdzie sufit wydajności jest rzeczywiście wyższy. Gracze o skinach takich jak adderall_abuser, ironmouse i inni aktywni członkowie społeczności na ogromnych serwerach już eksplorują tę przestrzeń. Sprawdź społeczności streamingowe i duże projekty survival na Modrinth - zobaczysz Folię pojawiającą się coraz częściej.


Alternatywy Godne Rozważenia

Paper. Nadal złoty standard dla większości serwerów. Stabilny, dobrze zrozumiały, ogromny ekosystem pluginów. Jeśli Folia wydaje się przesadą, funkcje optymalizacyjne Papera (asynchroniczne ładowanie chunków, zmniejszone ticku AI jednostek itd.) mogą wystarczyć.

Purpur. Fork Papera z dodatkowymi optymalizacjami dla każdego gracza. Lepszy dla serwerów, gdzie doświadczenie graczy jest bardzo zmienne (niektórzy AFK, niektórzy aktywnie eksplorują). Mniejsza zmiana architektury niż Folia, bardziej ukierunkowane zyski wydajności.

Fabric Server. Jeśli potrzebujesz obsługi modów (nie pluginów), ekosystem Fabric jest teraz solidny dla serwerów. Nie wielowątkowy w ten sam sposób, ale lekki i szybki.

Szczera prawda: Folia jest wyspecjalizowana. To dla konkretnego problemu w konkretnej skali. Dla wszystkich pozostałych, Paper z przemyślaną konfiguracją nadal jest właściwym wyborem.

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