RE:NODE

Dimenzování11 min čtení

RAM pro server 7 Days to Die: reálná čísla

Paměť serveru 7 Days to Die podle velikosti světa a počtu hráčů, klíče v serverconfig.xml, které ji ovlivňují, špičky při blood moonu, řádek v logu a kdy restartovat.

4 čtenáři

Dedikovaný server 7 Days to Die potřebuje 8 GB paměti pro Navezgane nebo náhodný svět 6k a nejvýš čtyři hráče, 10 až 12 GB pro svět 8k se šesti až osmi hráči a 12 až 14 GB pro svět 10k s osmi a více hráči rozprostřenými po mapě. Overhaul módy přidají navrch dalších 2 až 4 GB. Jsou to špičkové hodnoty a ta špička má své datum: noc hordy, kdy všichni hráči naráz odrážejí vlnu zombie, po týdnu růstu paměti od posledního restartu. Dvě nastavení, která paměť ovlivňují nejvíc, jsou velikost světa, který vygeneruješ, a view distance, kterou povolíš. Obojí se snáz nastaví správně předtím, než svět vznikne, než potom.

Co server 7 Days to Die drží v paměti#

7 Days to Die je server na Unity, který simuluje voxelový svět, ve kterém hráči kopou, staví a vyhazují věci do vzduchu. Paměť se skládá ze čtyř částí.

  • Načtené chunky. Svět je uložený po chunkech a server drží načtené a aktivní ty, které jsou kolem každého hráče. Víc hráčů rozptýlených dál od sebe znamená víc chunků; skupina v jedné základně jich načte jen zlomek oproti stejné skupině, která zkoumá mapu na čtyři strany.
  • Entity. Zombie, zvířata, hráči, vozidla, odhozené batohy a loot bagy. Každá zombie je AI s hledáním cesty a to je ve zničitelném voxelovém světě drahé na paměť i na CPU.
  • Statická data světa. Vygenerovaný terén, rozmístění POI, silniční síť a data prefabů pro každou budovu, která se může objevit. Větší vygenerovaný svět má všeho víc.
  • Dynamic mesh. Systém, díky kterému hráči vidí vzdálená POI a hráčské stavby i s poškozením. Cachuje meshe pro oblasti, které sleduje, a řídí se klíčem DynamicMeshEnabled a souvisejícími.

Pod tím vším běží runtime Unity a managed heap a jako každý managed runtime potřebuje volné místo, aby v něm mohl uklízet. Server, jehož živá data zaplní celý kontejner, nechá garbage collectoru málo prostoru a právě tehdy začnou záseky, ještě než cokoli dojde.

RAM podle velikosti světa a počtu hráčů#

Svět a skupinaRAMvCPUPoznámky
Navezgane nebo svět 6k, do 4 hráčů8 GB2Spodní hranice pro pohodlný server
Náhodný svět 8k, 6-8 hráčů10-12 GB2-3Běžná velikost komunitního serveru
Svět 10k, 8+ hráčů, rozptýlení12-14 GB3Rozptýlení rozhoduje víc než počet
Overhaul módy (Darkness Falls a podobné)přidej 2-4 GBpřidej 0.5-1Víc zombie, víc itemů, víc bloků
Generování světa při prvním startušpička nad všemi předchozími-Jednorázový skok

7 Days to Die je jedna z mála her, kde je 8 GB spíš spodní hranice než pohodlný střed. Pod ní server nastartuje a klidné odpoledne vydrží, ale při první noci hordy spadne. Průvodce nastavením serveru 7 Days to Die používá stejná čísla a prochází celou konfiguraci.

Sloupec s hráči je poctivý v jedné věci, která lidi překvapuje: výchozí ServerMaxPlayerCount je 8 a hra je navržená pro skupiny této velikosti. Větší servery existují a běží, ale každý další hráč, který se vydá vlastní cestou, načte další oblast chunků a spustí další sadu spawnů zombie, takže paměť i CPU rostou po zhruba desítce hráčů rychleji než lineárně.

Nastavení, která hýbou pamětí#

Všechno jsou to properties v souboru serverconfig.xml. Výchozí hodnoty se mezi verzemi měnily, takže čti hodnoty ve svém vlastním souboru a nespoléhej na žádnou tabulku, včetně té tady.

serverconfig.xml
<property name="GameWorld"                       value="RWG"/><property name="WorldGenSize"                    value="8192"/><property name="WorldGenSeed"                    value="tuesday-group"/><property name="ServerMaxPlayerCount"            value="8"/><property name="ServerMaxAllowedViewDistance"    value="10"/><property name="MaxSpawnedZombies"               value="64"/><property name="MaxSpawnedAnimals"               value="50"/><property name="BloodMoonEnemyCount"             value="8"/><property name="DynamicMeshEnabled"              value="true"/><property name="DynamicMeshLandClaimOnly"        value="true"/><property name="DynamicMeshMaxItemCache"         value="3"/>
PropertyTypická výchozí hodnotaVliv na paměť
WorldGenSize6144Velikost náhodného světa; větší znamená víc statických dat a víc k prozkoumání
ServerMaxAllowedViewDistance12Omezuje view distance každého klienta v chuncích; nižší znamená méně načtených chunků
MaxSpawnedZombies64Zombie naživu na celé mapě najednou
MaxSpawnedAnimals50Zvířata naživu najednou
BloodMoonEnemyCount8Zombie z hordy na hráče najednou při blood moonu
DynamicMeshEnabledtrueMeshe vzdálených POI a staveb; jejich cache stojí paměť
DynamicMeshLandClaimOnlytrueOmezí dynamic mesh na oblasti s land claimem
DynamicMeshMaxItemCache3Kolik mesh položek se drží v paměti

Dvě, na která stojí za to sáhnout jako první:

`ServerMaxAllowedViewDistance`. Rozsah je 6 až 12 a určuje strop, který si může vyžádat kterýkoli klient. Snížení z 12 na 10 nebo 8 zmenší počet chunků, které server drží načtené pro každého hráče, a ve světě plném mlhy, stromů a budov si toho většina hráčů sotva všimne. Je to nejlevnější úspora paměti v celém seznamu.

`WorldGenSize`. Svět 10k není jen větší; má víc měst, víc POI a víc silnic a jeho první generování trvá tak dlouho, že lidé pojmou podezření, že se server zasekl. Pokud vás hraje čtyři, svět 6k nebo 8k jim nabídne víc než dost prostoru k průzkumu a stojí znatelně míň. Svět dimenzuj podle skupiny, ne podle největšího čísla v nabídce. Generování světa v 7 Days to Die podrobně popisuje velikosti RWG, seedy a dobu generování.

Noc hordy je zátěžový test#

Každý sedmý den ve výchozím nastavení pošle blood moon vlny zombie na každého hráče. BloodMoonEnemyCount říká, kolik jich je na hráče naživu najednou, takže osm hráčů s výchozí hodnotou znamená 64 zombie z hordy, které si hledají cestu k osmi pozicím, často skrz hráčské obrany, které se při tom ničí a přepočítávají. K tomu přibývají běžné spawny, načtené chunky kolem každé základny a zapisované poškození bloků.

Ten večer je špičkou paměti i CPU a přichází na konci týdne stálého růstu od posledního restartu. Tři návyky ho pomáhají zvládnout:

  1. Restartuj před nocí hordy, ne po ní. Restart odpoledne sedmého dne vrátí server na jeho základní hodnotu těsně před nejtěžší hodinou. Plány restartů, které pomáhají popisují, jak zvolit čas a varovat hráče.
  2. Braň se na méně místech. Čtyři oddělené základny s hordou jsou čtyři oddělené problémy s hledáním cesty a čtyři sady načtených chunků. Dvě společné základny jsou polovina.
  3. Nezvyšuj `BloodMoonEnemyCount` kvůli velké skupině. Hodnota platí na hráče. Server s dvanácti hráči při hodnotě 8 už je na 96 zombie najednou; obtížnost vychází z počtu na základnu, ne na hráče.

Blood moon a výkon rozebírá nastavení hord a jejich cenu hlouběji.

Řádek v logu, který říká pravdu#

Server 7 Days to Die zapisuje do logu stavový řádek zhruba jednou za minutu. Vypadá takto, přesná pole se mezi verzemi mírně liší:

code
Time: 412.03m FPS: 38.21 Heap: 3215.4MB Max: 4120.7MB Chunks: 612 CGO: 74 Ply: 6 Zom: 41 Ent: 63 (112) Items: 0 CO: 6 RSS: 9874.2MB

Pole, která stojí za čtení:

  • `FPS` je rychlost simulace serveru. Závisí na CPU, ne na paměti. Trvalé hodnoty pod zhruba 20 jsou chvíle, kdy hráči začnou vidět teleportující se zombie.
  • `Heap` a `Max` jsou použitý managed heap a největší hodnota, které dosáhl. Heap, který v průběhu dní pořád překonává vlastní maximum, je růst nebo únik paměti.
  • `RSS` je rezidentní paměť celého procesu - číslo, které limit kontejneru skutečně počítá. Porovnej ho s limitem svého plánu. Pokud je RSS na konci noci hordy do zhruba 10 % limitu, jsi jeden špatný večer od zastavení serveru.
  • `Chunks`, `Zom` a `Ent` ukazují, co ta čísla pohání: načtené chunky, živé zombie a entity celkem.

Vyfiltruj si tyto řádky z logu a máš historii paměti bez jakýchkoli dalších nástrojů. Příkaz mem v admin konzoli vypíše podobný souhrn na požádání a spustí garbage collection, což se hodí ke zjištění, jestli je vysoká hodnota živá data, nebo jen odpad čekající na úklid. Admin příkazy pro 7 Days to Die uvádějí zbytek konzole.

Generování světa a složka se savem#

Náhodný svět se generuje při prvním startu s daným názvem, seedem a velikostí. Generování staví terén, rozmisťuje města a POI, klade silnice a výsledek zapisuje do složky vygenerovaných světů. Je to těžká jednorázová práce: paměť během generování může přesáhnout to, co hotový svět potřebuje k běhu, a svět 10k může generování trvat dlouho. Na plánu, který ke spuštění světa stačí, může generování přesto selhat.

Dvě cesty, jak to obejít:

  1. Generuj na klidném serveru, kde není nikdo připojený a neběží nic dalšího, a hned po dokončení udělej backup.
  2. Generuj v herním klientu na vlastním PC se stejným názvem, seedem a velikostí a pak nahraj složku vygenerovaného světa na server. Server ji najde a generování přeskočí.

Potom save roste, jak hráči hrají. Každá oblast světa je soubor .7rg ve složce Region v savu a oblasti, kde se kopalo, stavělo nebo způsobilo poškození, ta data nesou. Region soubory dobře prochozeného světa 10k mohou dosáhnout několika gigabajtů, což je disk, ne paměť, ale jejich načítání a ukládání je součástí práce serveru pokaždé, když hráč vstoupí do nové oblasti.

Módy: modlety a overhauly#

Módy pro 7 Days to Die sahají od modletů o jednom souboru, které změní jeden recept, až po kompletní overhauly, které nahrazují většinu obsahu hry.

  • Modlety upravující XML - recepty, loot, velikosti stacků - stojí v paměti skoro nic.
  • Obsahové modlety, které přidávají bloky, itemy nebo typy zombie, přinášejí svá assety a svoje spawny.
  • Overhauly jako Darkness Falls přidávají nové třídy zombie, spoustu nových bloků a itemů, nová POI a změněné spawnování. Jsou to prakticky jiná hra s jinými nároky: přidej 2 až 4 GB a půl jádra a počítej s pomalejším startem.

Overhauly následují hlavní verze základní hry se zpožděním, takže zkontroluj, že verze, kterou instaluješ, přesně odpovídá verzi hry na serveru; nesoulad obvykle zastaví server při načítání, místo aby spotřeboval víc paměti. Overhaul módy na serveru popisují instalaci a synchronizaci klientů.

Příklad z praxe: šest hráčů na světě 8k#

Skupina šesti lidí chce náhodný svět 8k, výchozí počty zombie, jeden balík modletů s vylepšeními pohodlí a blood moon každých sedm dní. Tabulka říká 10 až 12 GB. Takhle to ověříš na skutečných datech, místo abys věřil tabulce.

  1. Nejdřív vygeneruj, pak dimenzuj. Svět vygeneruj na klidném serveru nebo v klientu a nahraj ho, aby o plánu nerozhodoval skok při generování.
  2. Zaznamenej základní hodnotu. Spusť server bez připojených hráčů a po pěti minutách si přečti RSS ze stavového řádku. Na světě 8k je to engine, statická data světa a modlety.
  3. Přečti si běžný večer. Se všemi šesti hráči online a rozptýlenými po mapě sleduj RSS, Chunks a Zom během nejvytíženější hodiny. Rozptýlení se projeví vysokou hodnotou Chunks.
  4. Přečti si noc hordy. Stejná pole na vrcholu blood moonu sedmého dne, bez předchozího restartu, ukážou skutečnou špičku týdne.
  5. Rozhodni. Pokud je ta špička pod zhruba 85 % plánu, vejde se. Pokud je blízko, nejlevnější opravy jsou restart před nocí hordy a ServerMaxAllowedViewDistance snížená o dva. Pokud nestačí ani to, přejdi o tarif výš.

Většina skupin tohoto tvaru pohodlně vystačí s 10 GB při restartu před hordou a s 12 GB bez něj. Rozdíl mezi těmi dvěma plány bývá jedna naplánovaná úloha.

Co se stane na limitu#

Když serveru 7 Days to Die dojde paměť uvnitř kontejneru, nezapíše přátelskou chybu. Proces se zastaví, log skončí uprostřed řádku a máš to, co se stihlo zapsat do posledních region souborů. Region soubory zachycené uprostřed zápisu jsou jedním ze způsobů, jak se save poškodí, a proto jsou backupy u této hry důležitější než u většiny jiných.

Na RE:NODE se server, který dosáhne limitu paměti, zastaví a čistě restartuje, místo aby se nechal swapovat; swapující server 7 Days je stejně nehratelný. Sloty pro backupy jsou součástí každého plánu a záložka Schedules umí spustit backup před restartem před nocí hordy. Plány pro 7 Days to Die začínají na 8 GB za 20 $ měsíčně a končí na 14 GB a Steam přihlášení, které instalace potřebuje, patří na záložku Setup. Přechod na vyšší tarif zvedne limit na serveru, který už máš, takže svět zůstane na místě.

FAQ#

Stačí 8 GB na server 7 Days to Die?

Na Navezgane nebo náhodný svět 6k s nejvýš čtyřmi hráči ano. Na svět 8k se šesti až osmi hráči poběží, ale na konci týdne bez restartu to bude při noci hordy těsné. Pod 8 GB se server nevyplatí provozovat.

Proč můj server 7 Days lagá při noci hordy?

Protože noc hordy je špičkou paměti i CPU: desítky zombie hledají cestu přes zničitelné bloky na několika základnách najednou. Podívej se na pole FPS v logu. Pokud se propadne, zatímco RSS je hluboko pod limitem, jde o CPU a víc pomůže méně základen s hordou než paměť. Pokud je RSS u limitu, restartuj před další hordou.

Potřebuje větší svět víc RAM?

Ano, víc než ve většině her. Větší náhodný svět nese víc statických dat a víc POI a hráči se po něm rozptýlí dál a načtou víc chunků. Svět 10k pro čtyři hráče znamená platit za mapu, kterou nikdy nenavštíví.

Kolik RAM potřebuje Darkness Falls?

Počítej s o 2 až 4 GB víc, než by stejný svět potřeboval ve vanille, a s půl jádra navíc. Overhauly přidávají typy zombie, bloky a itemy a mění spawny, takže zvyšují základní hodnotu i špičku noci hordy.

Pomůže restart paměti 7 Days to Die?

Ano. Paměť roste s dny uptimu a restart vrátí server na základní hodnotu. Načasuj ho před noc hordy, ne po ní, aby nejtěžší hodina týdne začínala z nejnižšího bodu.


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