spinner

1.14.2 a její (ne)optimalizace

20:42 29.05.2019
Vážení zákazníci,

Jak jste si někteří mohli všimnout, verze 1.14 a vyšší pro Minecraft servery jsou verze absolutně nehratelné pro více hráčů.
Došlo také k osočením naší společnosti, někteří z Vás si myslí, že je to chyba způsobená námi.
Není tomu tak. Chyba není u nás, chyba je na straně Mojangu, potažmo na straně Microsoftu, který dané studio vlastní.
Je opravdu smutné, že se taková chyba dostane až do produkce, do dvou dalších bugfixů a přesto jsou stále nehratelné.

Abychom zde jen nepsali nepotvrzené výroky, dali jsme si tu práci a podívali se 1.14.2 na zoubek.
Postupně jsme aplikaci testovali a hledali, proč se aplikace tak silně seká. Výsledek je překvapivý.

Hlavní dvě chyby verze 1.14 jsou neodladěný multithreading a neodladěné generování světa.
Každý server si při startu vytváří 8 a více workerů, kteří pracují na generování mapy. To by nebylo nijak špatné, máme Xeony, které jsou na práci multithread aplikací uzpůsobeny. Každopádně multithreading v Minecraftu prostě nefunguje. Jejich snaha o načítání světa nejen že blokuje jednotlivé procesy, trvá než se workeři sesynchronizují, což brzdí nejen samotný procesor, ale i samotné vytváření serveru. Dokud nejsou všichni workeři načteni a nemají potřebná data, nevygenerují z mapy ani ň.

Pro test jsme generovali mapu na verzi 1.12.2, kde je staré generování – samotný server se načítal 40 sekund i s generováním mapy. Při dalším startu se server načítal POUZE 12 sekund.

Na verzi 1.14 jsme nechali generovat mapu znovu. Doba načítání? Ohromných 120 sekund. Po restartu je doba načítání 30 – 60 sekund, v závislosti na tom jak silné CPU aplikaci předhodíte.

Jak může tedy multithread aplikace načítat svět déle, než singlethread aplikace? Odpověď je prostá – neschopný programátor.

Druhým hlavním problém je neodladěné načítání a generování mapy.
Opět jsme si vzali verzi 1.12.2, zde jsme se připojili na server, přidali si fly a dokonce pomocí Essentials nastavili speed 10. Server se během našeho lítání po mapě zpozdil asi jen ve dvou nebo třech ticích. Jinak bylo vše v pořádku. Po startu na mapě World měl server 20 TPS. Po načítání 17 – 20 a pak se již stabilně držel na 20.

Dále jsme na server nainstalovali verzi 1.14.2. Po inicializaci mapy a připojení 1, slovy „jedné“, osoby, začal server načítat stovky entit a ty začnou server znatelně sekat. TPS? Ty byly na hodnotě 10. Serveru jsme pro test přidali 5 GHz/8t CPU. A co se stalo? Opět se server masivně sekal, protože si server nedokáže přeřadit jednotlivé entity do dalších threadů, nedokáže vůbec fungovat.

Taková situace je opravdu příšerná. Nevíme zda si tímto Microsoft snaží odstranit veškerou konkurenci, zničit tak možné hostování serverů a donutit lidi koupit si Realms. Chování by tomu nasvědčovalo, ale opravdu nechceme nikoho z ničeho osočit nebo obvinit. Obrázek si však můžete udělat sami. Co vypovídá o aplikaci, která není schopná pracovat na 5 GHz procesoru s 8 GB RAM? Je to prostě špatně sepsaná aplikace.

Mojang dále ani neřeší znovu objevující se bugy. Na verzi 1.14.2 se opět objevil bug s přílišným počtem entit načtených na serverech – zejména tedy s Pillagery. Tento report byl ohlášen v listopadu, v dubnu se vrátil a přesto jej nikdo neřeší: https://bugs.mojang.com/browse/MC-139818

Sami jsme se pokusili situaci ověřit – na serveru jsme provedli příkaz /killall, kterým jsme zabili veškeré moby a počkali pár vteřin. Po dvou vteřinách bylo v okolí Pillager outpostu na verzi 1.14.2 načtených asi 30 pillagerů. Obtížnost byla nastavena jako „Hard“.


Takový počet snad hráč ani nemůže na obtížnost Hard porazit. Na serveru jsme byli opět dva a ani ve dvou si nemyslíme, že bychom to zvládli. Opět to vypovídá o kvalitě nových verzí.

Nicméně jsme se rozhodli vzít funkcionalitu do svých rukou. Sepsali jsme plugin, který funguje od verze 1.13.2, jenž bude provádět optimalizaci TPS. Zpříjemní se Vám tak požitek ze serveru a samotný výkon serverů se zvýší.
Tento plugin jsme se Vám rozhodli přidat automaticky k serveru, nemusíte jej instalovat. Je nutné mít pouze Bukkit, Spigot nebo PaperSpigot.

Tento plugin dokáže zvýšit výkon 1.14.2 až o 50 %. Zvýší se tak počet hráčů, které server zvládne udržet. Servery Vám nebudou padat při 6 hráčích. Dále můžeme jen čekat na vylepšení optimalizace multithreadingu. Ten je opravdu příšerný. Mojang se ke všem chybám staví pasivně.

Servery stačí restartovat, nový update se Vám načte.

Děkujeme za pochpoení.

Kontakty

  • Hicoria Hosting s.r.o.
  • Úpická 460, 542 33 Rtyně v Podkrkonoší
  • IČO: 05870313
  • DIČ: CZ05870313
  • E-mail: hicoria@hicoria.com
  • Spisová značka: C 39034 vedená u Krajského soudu v Hradci Králové

Něco z našeho blogu

Kontakty

  • Hicoria Hosting s.r.o.
  • Úpická 460, 542 33 Rtyně v Podkrkonoší
  • IČO: 05870313
  • DIČ: CZ05870313
  • E-mail: hicoria@hicoria.com
  • Spisová značka: C 39034 vedená u Krajského soudu v Hradci Králové

Kontakty

  • Hicoria Hosting s.r.o.
  • ADRESA: Úpická 460, 542 33 Rtyně v Podkrkonoší, Česká republika
  • IČO: 05870313
  • DIČ: CZ05870313
  • E-mail: hicoria@hicoria.com
  • Spisová značka: C 39034 vedená u Krajského soudu v Hradci Králové

Nastavení cookies

Používáme cookies k personalizaci obsahu a reklam, k umožnění funkcionalit sociálních sítí a k analýze provozu webových stránek. Informace o provozu a užívání webových stránek Vámi jsou sdíleny s našimi sociálními sítěmi, reklamními a analytickými partnery, kteří je mohou kombinovat s dalšími informacemi, které jste jim poskytli nebo které o Vás sesbírali při užívání jejich služeb.