News zur Severtechnik
#11
RE: News zur Severtechnik
Hallo zusammen!

Die Tests zu Velocity sind abgeschlossen, die Community-Session war gut besucht und wie versprochen, fasse ich euch hier noch die Ergebnisse der Tests zusammen.

Testplan

Um die unterschiedlichen Servertechniken (Single oder Velocity) exakt miteinander vergleichen zu können, haben wir einen simplen Testplan entwickelt.

Der Testplan enthält Tätigkeiten um das normale Minecraft-Spielerlebnis nachzuempfinden.

Da der Testserver wesentlich “kleiner” ist als der Liveserver, konnten wir mit diesem Testplan mehr oder weniger die Last von 35 Spielern auf dem Liveserver generieren.

[Bild: attachment.php?aid=4341]

Der Test dauerte immer exakt 12 Minuten, damit die Kürbisfarm zwei mal abgeerntet und eingesammelt werden konnte. Sofern ein Spieler das Ende der Minecart Strecke erreicht hat, ist er die gleiche Strecke wieder zurückgefahren.


Allgemeine Informationen zu den folgenden Screenshots


Die folgenden Screenshots entstammen einem sogenannten Spark-Report. Spark ist der Nachfolger von Aigars Timing Reports.

Um auf einem lagfreien Server spielen zu können, muss dieser Server es schaffen, die Ticks per Second (TPS) auf 20 zu halten. Alles unter 19 merkt man bereits durch Mini-Ruckler oder durch Blöcke, die beim Abbauen wieder da sind, etc.

Damit der Server 20 Ticks pro Sekunde schafft, darf die Berechnung eines Ticks maximal 50 Millisekunden dauern:

1 Sekunde = 1000 Millisekunden
20 Ticks per Second = 1000 Millisekunden / 20 = 50 Millisekunden pro Tick


Ergebnis Single-Server

[Bild: attachment.php?aid=4342]

Wie man hier gut erkennen kann, haben wir mit unserem Testplan genau das erreicht, was wir wollten.

Die TPS sind während des Tests bei unter 20 gewesen, die Millisekunden pro Tick (MSPT) waren im Durchschnitt bei 41ms/tick, also schon sehr knapp an den maximalen 50ms/tick.

Allerdings sieht man auch Spitzen (max) von bis zu 296ms/tick - dabei werden halt nur noch 3,33 ticks pro Sekunde berechnet.

Außerdem kann man gut bei der CPU (Process) und CPU (System) erkennen, dass einzelne Cores auf dem Server bis zu 89% ausgelastet waren.

Die Werte Memory und Disk können wir ignorieren, da diese keine Relevanz haben. Der Liveserver ist nochmal deutlich leistungsstärker als der Testserver.

Zusätzlich kann man bei Spark eine sogenannte Heatmap erstellen lassen. Dort wird grafisch angezeigt, mit welchen Tasks der Java Thread beschäftigt ist.

[Bild: attachment.php?aid=4343]

Wie man gut erkennen kann, gehen etwa 30% Last auf ServerChunkCache.tick() - das sind Prozesse bei denen Chunks ge- oder entladen werden, die durch das Teleportieren in den Test simuliert wurde.

Ebenso gehen etwa 25% der Last auf EntityTickList, die restlichen 45% Last verteilen sich recht gleichmäßig auf andere Berechnungen, wie Plugins, WorldGeneration, Scheduled Task, etc.


Ergebnis Velocity-Server - Bauwelt

[Bild: attachment.php?aid=4344]

Wie man hier bereits an den Farben erkennen kann, sind die meisten Werte grün. Sofern wir Memory und Disk ignorieren, gibt es nur einen Wert in Rot: MSPT - aber auch hier sieht man bereits eine Halbierung der maximalen Tick-Zeit gegenüber dem Single-Server.

Auch die Heatmap sieht ganz anders aus:

[Bild: attachment.php?aid=4345]

Wie man schön sieht, ist ein neuer, großer Balken waitUntilNextTick() zu finden. Dieser Balken ist im Single-Server Test gar nicht vorhanden gewesen, da der Server keine IDLE Time hatte. Bei Velocity sieht man sehr schön, dass sich die Last besser auf die CPUs verteilt und daher auch IDLE Time vorhanden ist.

Ergebnis Velocity-Server - Farmwelt

[Bild: attachment.php?aid=4346]

Auch die Spark Reports vom Farmweltserver sehen sehr gut. Wenn wir wieder Memory und Disk ignorieren, bleiben eigentlich keine roten Zahlen von relevanz übrig. Der Farmweltserver wird auf dem Liveserver mit mehr als 4GB RAM betrieben, wodurch die anderen roten Zahlen (GC = Garbage Collection im RAM) verschwinden.

[Bild: attachment.php?aid=4347]

Und die Heatmap zeigt auch einen großen Idle Balken.


Fazit

Velocity hat unsere Erwartungen erfüllt und wird einen erheblichen Performance Einfluss haben. Allerdings - und das sollte allen klar sein - erkaufen wir uns hier lediglich Zeit.

Das Problem der Entities wird für immer bestehen bleiben, wenn wir Blockminers als kreativen Ort des Bauens erhalten wollen.

Daher nochmal der dringende Appell an alle User:

Überlegt, ob und wo Entities Sinn machen, oder wo man eventuell auf einige verzichten kann.

Jede kleine Änderung hilft dem Server und damit allen Spielern.

Was auch erwähnt werden sollte: Die Serveradministration ist in Zukunft durch Velocity wesentlich umfangreicher und fehleranfälliger bei Updates.

Ein Großteil unserer aktuellen Zeit entfällt auf die Umstellung der Plugins, Datenbanken, Sync, etc. Wir werden versuchen, das Erlebnis so nah wie möglich an der aktuellen Konfiguration zu halten, es wird aber defintiv Änderungen in der Handhabung geben - die genauen Änderungen könnt ihr dann im Newsthread nachlesen, sobald Velocity live ist.

Aktuell ist der Testserver soweit durchgetestet, dass wir noch etwas mehr als 10 kritische Fehler / Bugs entdeckt haben, wer sich aber einen ersten Eindruck verschaffen möchte, kann gerne auf dem Testserver vorbeischauen.

Die Adresse des Testservers lautet: test.blockminers.de
Ihr könnt mit jedem Client neuer als 1.21.2 joinen.

Sobald wir die kritischen Bugs gefixt haben, müssen wir unsere Priorität auf die Automatisierung der Updates legen. Ohne eine automatische Verteilung von Plugins & Configs wird es zukünftige Updates extrem erschweren.


Stay tuned

Cola, Razen, Kalli
sowie das gesamte Blockminers Team


Angehängte Dateien Thumbnail(s)
                           
Zitieren
#12
RE: News zur Severtechnik
Vielen Dank Cola für die Zusammenfassung.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste