RE:NODE

Dimenzování16 min čtení

RAM, CPU a disk herního serveru podle hry

Jedna tabulka rozumné RAM, vCPU, disku a portů pro každou hru, kterou hostujeme, a pak důvod, proč který žánr potřebuje to, co potřebuje.

6 čtenářů

Většina rad k dimenzování herních serverů je jedno číslo bez kontextu, a proto si tolik lidí kupuje 16 GB pro hru omezenou jedním jádrem CPU a 1 GB pro hru, která měsíc po spuštění žere paměť. Tabulka níže je poctivá verze: výchozí bod v RAM, vCPU, disku a portech pro každou hru v katalogu RE:NODE, a po ní důvod, proč každý žánr potřebuje to, co potřebuje, abys mohl jít od toho čísla nahoru nebo dolů, místo abys hádal. Pokud si přečteš jen jednu větu, přečti si tuhle: prodává se paměť, dojde obvykle jedno rychlé jádro a disk je zdroj, který tiše selže při aktualizaci ve tři ráno.

Jak ta čísla číst#

Čtyři sloupce, čtyři různé druhy tvrzení, a nejsou stejně spolehlivé.

RAM je pevný strop, ne cíl. Kontejner s 4 GB se zastaví na 4 GB. Číslo v tabulce je tedy přidělení, se kterým by měl server dané hry začít pro běžnou partu na světě starém pár týdnů, s malou rezervou nad tím, co proces skutečně používá. Většina her bude na grafu paměti v panelu ukazovat 60-75 % z něj, a to je správně. Server, který sedí na 97 % svého limitu, je od jednoho vytíženého večera od restartu jádrem.

vCPU je to matoucí, protože jde o podíl, ne o počet. V hostingu na Pterodactylu, včetně RE:NODE, je číslo CPU procento jednoho jádra, takže 150 znamená 1,5 vCPU a je to pevné omezení, ne příslib jednoho a půl fyzického jádra. Dává ti dvě věci: rezervu na hlavním vlákně, když začne bitva, a místo pro vedlejší vlákna - ukládání, síť, generování chunků, garbage collection - aby běžela, aniž by kradla simulaci. Téměř žádný herní server nepoužívá víc než jedno jádro na to, na čem ti záleží, takže 2 vCPU neznamená „dvakrát rychlejší než 1“, ale „jedno vytížené jádro plus místo na všechno ostatní“.

Disk je přidělení, které se kupuje, ne velikost stahování. Musí pojmout hru, svět a jeho savy, všechny mody, logy a dost volného místa, aby se další aktualizace stáhla dřív, než nahradí to, co tam je. Provoz přesně na velikosti instalace je způsob, jak aktualizace selže.

Porty je počet přidělení, která server potřebuje. Herní port není nikdy celý příběh: většina her chce samostatný query port, aby je viděly prohlížeče serverů, a několik chce třetí pro RCON, webový admin panel nebo druhý shard. Porty herních serverů vysvětleně je dlouhá verze toho, proč může server běžet dokonale a přitom být neviditelný.

Požadavky pro každou hru, kterou hostujeme#

Každý řádek je pohodlný výchozí bod pro typickou partu, ne minimum, které sotva nastartuje, a ne číslo navržené tak, aby ti prodalo něco většího. Název každé hry odkazuje na její tarify a jejich přesné stupně.

HraRAMvCPUDiskPorty
7 Days to Die8 GB255 GB2 TCP+UDP
Abiotic Factor6 GB1.535 GB2 UDP
Arma 36 GB255 GB5 UDP
Assetto Corsa3 GB1.530 GB2 TCP+UDP
BeamMP3 GB1.515 GB1 TCP+UDP
Counter-Strike 1.61 GB0.7510 GB1 UDP
Counter-Strike 22 GB1.540-60 GB2 UDP
DayZ6 GB235 GB3 UDP
Don't Starve Together2 GB115 GB2 UDP
Euro Truck Simulator 22 GB115 GB2 UDP
Factorio2 GB1.510 GB1 UDP
FiveM4 GB1.530 GB2 TCP+UDP
Garry's Mod2 GB115 GB1 UDP
Insurgency: Sandstorm3 GB220 GB2 UDP
Killing Floor 24 GB1.540 GB3 UDP+TCP
Minecraft (Paper)4 GB1.530 GB1 TCP
Palworld8 GB240 GB2 UDP
Project Zomboid4 GB225 GB3 UDP+TCP
RimWorld2 GB115 GB1 TCP
SCP: Secret Laboratory5 GB1.520 GB2 UDP
Satisfactory8 GB2.540 GB2 TCP+UDP
Skyrim Together2 GB115 GB1 UDP
Sons of the Forest8 GB250 GB3 UDP+TCP
Team Fortress 23 GB1.535 GB3 UDP
Terraria1 GB0.7510 GB1 TCP
The Forest4 GB1.7525 GB3 UDP
The Front8 GB2.540 GB3 UDP
The Isle8 GB2.535 GB3 UDP+TCP
Unturned3 GB1.515 GB2 UDP
Valheim3 GB1.520 GB2 UDP

Před vysvětlením stojí za povšimnutí dvě věci.

První je rozptyl. Counter-Strike 1.6 chce gigabajt a zlomek jádra; Palworld, Satisfactory a The Front chtějí osm gigabajtů a dvě a půl jádra. To je osminásobný rozdíl v paměti mezi hrami, které se obě popisují jako multiplayerové servery pro hrstku přátel, a plně ho vysvětluje to, kolik světa musí server držet v paměti najednou.

Druhá je, že sloupec RAM a sloupec vCPU se nehýbou společně. Counter-Strike 2 a Insurgency: Sandstorm jsou u paměti poblíž spodku a u CPU vzhledem k paměti poblíž vrcholu. The Forest a Abiotic Factor jsou opačně. Větší tarif zvedne obojí, což je v pořádku, ale znamená to, že tarif, který opravdu potřebuješ, určuje to, co dojde dřív - a rozlišit to je práce na třicet sekund, popsaná v CPU nebo RAM: co brzdí tvůj server.

Survival a budování základen: omezením je paměť#

7 Days to Die, Palworld, Project Zomboid, DayZ, Abiotic Factor, The Forest, Sons of the Forest, The Front, The Isle, Satisfactory a Valheim se uvnitř chovají všechny stejně, ať říkají jejich žánrové štítky cokoli. Server drží svět, který se generuje, jak ho lidé prozkoumávají, a drží ho dál. Spotřeba paměti první den není spotřeba paměti v šestém týdnu a nic, co uděláš v konfiguraci, tu trajektorii příliš nezmění.

Mechanismus stojí za pochopení, protože ti říká, kdy se trápit. Paměť survival serveru je zhruba součet tří věcí: chunků nebo buněk, které jsou právě načtené, protože je někdo poblíž, trvalých objektů, které existují, ať je poblíž kdokoli, nebo ne, a vlastního minima enginu. První roste podle toho, jak daleko jsou tví hráči od sebe. Druhé roste donekonečna, protože každá základna, bedna, farma, mrtvola, vozidlo a odhozená věc je trvalý objekt, který teď svět ve svém souboru nese.

Z toho plynou tři praktická pravidla:

  • Dimenzuj podle mapy, ne podle počtu hráčů. Čtyři hráči, z nichž každý postavil základnu 3 000 metrů od ostatních, stojí mnohem víc než osm hráčů v jednom městě. To je největší jednotlivý důvod, proč servery typu „minulý měsíc to bylo v pořádku“ přestanou být v pořádku.
  • Počítej se vzestupem a plánuj restart. Týdenní plánovaný restart nespraví únik paměti, ale vrátí server k jeho minimu místo k jeho stropu a u většiny těchto titulů je rozdíl gigabajt i víc.
  • Wipe a prořezávání jsou nástroj na paměť. Reset regionů ve 7 Days to Die, úklidy ve stylu EraseAllModData v Project Zomboid a nastavení lootové ekonomiky v DayZ existují částečně proto, že alternativou je soubor světa, který roste bez omezení.

Palworld je extrémní případ a má vlastní rozbor v paměti Palworld serveru: server drží každého pala v každé základně pro každého hráče, online či ne, a záleží na celkovém počtu základen na mapě, ne na počtu připojených lidí. Hnacím motorem nákladů ve Valheimu je terraformování, které se ukládá pro každý upravený kus země a nikdy nezmizí. The Isle a The Front jsou velké mapy v Unrealu, kde samotné minimum jsou několik gigabajtů, než se připojí první hráč.

Střílečky a arénové hry: jedno rychlé jádro#

Counter-Strike 2, Counter-Strike 1.6, Team Fortress 2, Insurgency: Sandstorm, Killing Floor 2 a SCP: Secret Laboratory jsou opačný problém. Mapa je pevná, malá a načte se jednou, takže paměť je od první do poslední vteřiny téměř konstantní. Proměnlivé je, kolik práce server udělá za tick, a těch je 64 nebo 128 za sekundu.

Tick má pevný rozpočet: při 64 ticích má server 15,6 ms na simulaci pohybu, registraci zásahů, tick každého pluginu a sestavení snapshotu pro každého připojeného klienta. Když ho překročí, tick je pozdě, což hráči cítí jako rubber-banding a nekonzistentní registraci zásahů, ne jako „lag“. Ta práce běží na jednom vlákně, takže pomůže jedině rychlejší jádro nebo méně práce na tick. Přidání paměti střílečce, která sebou trhá, nezmění vůbec nic. Jak číst toto číslo v jednotlivých enginech, popisuje co tick rate doopravdy znamená.

Kam jde paměť z tabulky u těchto titulů:

  • Counter-Strike 1.6 je dvacet let starý binární soubor GoldSrc. Gigabajt je štědrý a nikdy ho nevyužije. Je v seznamu, protože tarif musí existovat, ne proto, že je hra náročná.
  • Counter-Strike 2 a Team Fortress 2 sedí na 1-2 GB s plným serverem a zbytek přidělení je rezerva na střídání map, nahrávání dem a pluginy. Metamod a CounterStrikeSharp nebo SourceMod přidávají trochu paměti a znatelné množství CPU na tick, což je to, co sledovat.
  • SCP: Secret Laboratory je vyšší, než by naznačoval počet hráčů, protože kolo je celé zařízení simulované najednou a protože standardní pluginové frameworky s sebou přinášejí runtime .NET.
  • Killing Floor 2 je Unreal 3 s velkou instalací a jeho kola pro šest hráčů vytvářejí hodně AI. Cena v CPU je v hledání cest zedů, ne v hráčích.

Pokud kterýkoli z nich provozuješ s pluginy, počítej s tím, že pluginy jsou tvůj rozpočet CPU. Čistý Source server s 24 hráči je skoro nečinný. Stejný server se čtyřiceti pluginy pro SourceMod, systémem ranků nad databází, který se dotazuje synchronně, a hlasováním o mapě každé kolo, je jiný stroj.

Sandboxy, skriptované a simulační světy#

Zbývající hry jsou nepohodlný střed a mají jedno společné: jejich požadavky určuje to, co přidáš, ne to, co přijde v základu.

Minecraft je vázaný na paměť i na CPU v poměru, který si vybereš. view-distance a simulation-distance v server.properties jedno přímo převádějí na druhé - každý hráč drží načtený čtverec o 2 x view-distance + 1 chunkách, takže snížení z 10 na 6 odstraní asi 62 % chunků, které každý hráč drží. 4 GB pohodlně uživí dvacetihráčový server Paper s vanilla nastavením; těžký modpack chce 8 GB a víc a úplně jinou konfiguraci Javy. Podrobnosti jsou v článcích kolik RAM potřebuje Minecraft server a průvodce optimalizací Paperu.

FiveM je skriptovací platforma s přidanou hrou. Samotný binární soubor serveru je skromný; zdroje (resources), které instaluješ, ne. Čistý server s hrstkou resources je spokojený na 2 GB a plný roleplay framework s dvěma sty resources, databází za zády a zapnutým OneSync je stroj na 6-8 GB s pořádnou chutí na CPU. Seznam resources je tvůj dokument požadavků.

Garry's Mod je stejný příběh v Lue. Vanilla sandboxový server je maličký. DarkRP se šedesáti addony a kolekcí z workshopu ne a každý addon běží na stejném hlavním vlákně jako hra.

Factorio je nejčistší případ CPU v seznamu. Server provozuje simulaci v lockstepu na 60 aktualizací za sekundu a velká továrna může ten cíl na rychlém jádru nestíhat, i když používá pod gigabajt paměti. Když UPS klesne, odpovědí není víc RAM; je to méně entit.

Terraria, Don't Starve Together, RimWorld, Skyrim Together, Euro Truck Simulator 2, Assetto Corsa a BeamMP jsou všechno na dnešní poměry malé servery a u všech je důvodem přejít na vyšší stupeň mody, ne hráči. Don't Starve Together je zvláštní tím, že cluster s jeskyněmi jsou dva procesy serveru sdílející jedno přidělení, takže počítej s oběma. U BeamMP jsou náklady ve fyzice a ta je na vozidlo, ne na hráče.

Disk a aktualizace, která ho zaplní#

Na disku se lidé nachytají a je to nejnudnější zdroj až do chvíle, kdy je jediný, na kterém záleží.

Disk herního serveru drží čtyři věci a jen první je ta, na kterou lidé myslí:

  1. Nainstalovanou hru, což je u titulů ze SteamCMD stahování, které roste s každou aktualizací od vydání.
  2. Svět, savy a jejich rotující zálohy, které mohou u survival her samy dosáhnout několika gigabajtů.
  3. Mody, obsah z workshopu, mapy a stažená aktiva. V Arma 3, DayZ, Garry's Mod a Killing Floor 2 to běžně přesahuje základní instalaci.
  4. Volné místo pro další aktualizaci.

Ten čtvrtý bod je ten, který servery láme. SteamCMD stahuje do stejného svazku, který aktualizuje, takže aktualizace potřebuje zhruba velikost změněných souborů volnou nad existující instalací, než je může prohodit. Disk přesně o velikosti hry je disk, jehož příští aktualizace selže, obvykle s matoucí chybou o chybějícím manifestu aplikace. Nech 20-30 % volných a problém nikdy nenastane. SteamCMD vysvětleně pokrývá validate, bety a to, co po neúspěšné aktualizaci zůstane.

Dvě další fakta o disku, která stojí za to mít:

  • Logy rostou. Vytížený Source server s upovídaným logováním nebo Minecraft server s hovorným pluginem zapíše stovky megabajtů týdně. Rotuj je nebo je mazej podle plánu. Logy, které stojí za to držet jsou o tom, které za to místo stojí.
  • Zálohy uložené vedle světa nejsou zálohy. Každá hra s vestavěnou rotací záloh píše do stejného adresáře na stejném disku. Chrání před poškozeným savem, ne před smazaným serverem. Navíc se počítají do tvého přidělení disku.

Rychlost disku je samostatná otázka od jeho velikosti a na herním serveru záleží přesně u jedné operace: ukládání. Hra, která zapisuje celý svět jedním blokujícím průchodem, což je většina survival titulů, na tu dobu zamrzne. Co NVMe doopravdy mění rozebírá, které operace to pocítí a které ne.

Porty a protokoly#

Počet portů ve velké tabulce je počet přidělení, se kterými počítat. Tady jsou skutečné výchozí hodnoty u her, kde jsou stabilní a stojí za to je znát:

HraHerní portDalší porty
Minecraft25565 TCP25575 TCP pro RCON, pokud je zapnutý
Terraria7777 TCPžádné
Valheim2456 UDP2457 UDP query
Counter-Strike 2, TF2, Garry's Mod27015 UDP27020 UDP SourceTV, 27015 TCP RCON
Counter-Strike 1.627015 UDPžádné
Palworld8211 UDP27015 UDP query, 25575 TCP RCON
Project Zomboid16261 UDP16262 UDP, 27015 TCP RCON
7 Days to Die26900 TCP a UDP26901-26902 UDP, 8081 telnet
Factorio34197 UDPžádné
Arma 32302 UDP2303-2306 UDP
DayZ2302 UDP27016 UDP query
Unturned27015 UDP27016-27017 UDP
Insurgency: Sandstorm27102 UDP27131 UDP query, 27015 TCP RCON
Killing Floor 27777 UDP27015 UDP query, 8080 TCP WebAdmin
Don't Starve Together10999 UDP10998 UDP pro shard s jeskyněmi
FiveM30120 TCP a UDP40120 TCP pro txAdmin
BeamMP30814 TCP a UDPžádné
SCP: Secret Laboratory7777 UDPquery na stejném portu

Vzorec napříč téměř všemi: samotná hra mluví UDP, query protokol obvykle mluví UDP na jiném čísle a cokoli administrativního - RCON, telnet, webový panel - mluví TCP. Pravidlo firewallu, které otevře jen TCP, je nejčastější jednotlivý důvod, proč server běží a nedá se najít, a TCP vs UDP pro herní servery vysvětluje, proč to rozdělení vůbec existuje.

Kde taková tabulka selhává#

Čtyřmi způsoby a stojí za to být upřímný ke všem.

Mody zneplatňují všechno. Každé číslo výše je pro čistý server. Minecraftový modpack, seznam modů pro Arma 3, složka resources pro FiveM nebo kolekce z workshopu pro Project Zomboid může zdvojnásobit nebo ztrojnásobit paměť i CPU a žádná tabulka na světě nedokáže předpovědět o kolik. Jediná metoda, která funguje, je nainstalovat to, co chceš provozovat, zatížit to jeden večer skutečnými hráči a přečíst si grafy.

Stáří mění odpověď. Dimenzování není jednorázové rozhodnutí u hry s trvalým světem. Správný tarif pro šestý měsíc není správný tarif pro týden spuštění, a proto je kdy upgradovat tarif o příznacích, ne o prazích.

Počet hráčů je nejslabší prediktor. Deset hráčů stojících pohromadě stojí zlomek toho, co deset hráčů rozptýlených po mapě. Kolik hráčů se na server vejde prochází aritmetiku pro jednotlivé hry a to, proč číslo slotů v konfiguračním souboru nic neslibuje.

Verze se pohybují. Každé zde uvedené číslo je pro aktuální build každé hry v době psaní. Velké aktualizace mění paměťové profily, někdy hodně, a hra, která byla pohodlná na 4 GB před velkým obsahovým patchem, už po něm být nemusí. Po každé aktualizaci, která mění formát světa, zkontroluj grafy.

Nic z toho neznamená, že je tabulka k ničemu. Znamená to, že je výchozím bodem, který bys měl čekat, že jednou opravíš podle skutečných dat, tak či onak, což je mnohem lepší pozice než začínat od čísla, které někdo vymyslel pro ceník.

FAQ#

Je víc RAM vždy lepší pro herní server?

Ne. Paměť nad to, co proces používá, nedělá vůbec nic a u her na JVM, jako je Minecraft, příliš velký heap aktivně škodí, protože prodlužuje pauzy garbage collection. Kup paměť, kterou server potřebuje, plus rezervu na nejvytíženější hodinu, a zbytek rozpočtu pak případně utrať za CPU, pokud se pořád něco seká.

Co vlastně znamená 1,5 vCPU?

Pevný limit 150 % jednoho jádra. Server může využít jedno celé jádro a půl druhého současně a nad to je škrcen, místo aby si směl půjčovat. Protože téměř všechny herní servery provozují simulaci na jednom vlákně, praktický efekt je jedno vytížené jádro plus místo, aby se ukládání, síť a garbage collection mohly dít, aniž by ho přerušovaly.

Kolik disku mám nechat volného?

Zhruba 20-30 % přidělení. Většina je na aktualizace, které se stahují vedle stávající instalace, než ji nahradí, a zbytek je na logy a rotaci záloh. Server na 95 % disku selže při příští aktualizaci s chybou, která o místě na disku nic neříká.

Proč můj server potřebuje dva nebo tři porty pro jednu hru?

Jeden pro herní provoz, jeden pro query protokol, který čtou prohlížeče serverů a sledovací weby, a někdy třetí pro RCON, webové admin rozhraní nebo druhý shard světa. Hra funguje s otevřeným jen prvním; je prostě neviditelná pro každého, kdo ji hledá.

Můj server byl v pořádku a teď není. Co se změnilo?

Obvykle svět, ne tarif. Hry s trvalým světem hromadí stavby, předměty a prozkoumané území a všechno se musí držet nebo tikat. Zkontroluj, jestli paměť v klidu za týdny vzrostla a jestli se tví hráči rozptýlili po mapě. Obojí je běžné a ani jedno se neprojeví jako změna, kterou jsi udělal.

Můžu začít v malém a přejít výš později?

Ano, a je to správný přístup pro cokoli kromě spuštění, které jsi propagoval. Začni o stupeň pod tím, co si myslíš, že potřebuješ, sleduj grafy dva týdny a přejdi výš, pokud to čísla říkají. Na RE:NODE změna tarifu zvedne limity na serveru, který už máš, místo aby ho přestavěla, takže svět, konfigurace i adresa zůstanou tam, kde jsou.


Komentáře

Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.

0/2000