Cloud Server-Leistungstests mit Dwarf Fortress

Dwarf Fortress ist ein legendäres Spiel, das eine Fantasiewelt im Detail simuliert, und ein Spieler (in einem der Modi) kann eine Siedlung (Festung) von Gnomen (Zwergen) bauen und verwalten. Es wurde genug über das Spiel geschrieben, daher werde ich nicht auf Details eingehen. Es ist wichtig, dass das Spiel aufgrund der Größe der Spielwelt und der hohen Detailgenauigkeit der Simulation sehr hohe Ressourcen beansprucht - sowohl den Prozessor als auch den Speicher / Cache. Das Spiel unterstützt alle drei Hauptbetriebssysteme.

Für das Spiel gibt es ein DFHack-Projekt, das sich mit dem Reverse Engineering von Spieldatenstrukturen befasst und das Erstellen von Plugins und Skripten in C ++, Lua oder Ruby ermöglicht.

Ich bin der Autor der Anwendung und des zugehörigen Servercodes, der die Benutzeroberfläche des Spiels auf iOS-Geräten vollständig implementiert. Das heißt, der Benutzer legt das ursprüngliche Spiel, Plug-In und die Anwendung ab und kann von einem mobilen Gerät aus mit allen Annehmlichkeiten aus der Ferne spielen.

Der Server kann sowohl zu Hause installiert als auch von einem der Cloud-Anbieter gemietet werden. Und die Idee dieser Studie war geboren - erstens, um herauszufinden, welcher der Cloud-Dienste besser geeignet ist und den Benutzern überhaupt empfohlen werden kann, und zweitens, um die Serverleistung tatsächlich mit etwas anderem als Webservern und speziellen Dienstprogrammen zu vergleichen .

Zum Testen wurde die Version von Dwarf Fortress / DFHack 0.43.03-r1 verwendet. Ich habe ein öffentliches Image für Docker, einschließlich des Spiels selbst und der Mindestversion von DFHack (sowie des Servercodes selbst für das Remote-Spiel, aber in diesem Fall wird es nicht verwendet). In Lua wurde ein Skript geschrieben, um Tests auszuführen und die Ergebnisse an einen Webserver zu senden. Auch für die Automatisierung wurde das folgende Skript verwendet, das bei der Konfiguration von Servern in den Benutzerdaten angegeben wurde. Das heißt, Sie müssen nur einen Server erstellen, warten, bis die Ergebnisse eintreffen, und ihn löschen.

#!/bin/bash
fallocate -l 4G /swp ; chmod 600 /swp ; mkswap /swp ; swapon /swp ; echo '/swp none swap sw 0 0' >>/etc/fstab
apt-get update
apt-get install -fy docker.io
apt install unzip
wget https://github.com/mifki/dfremote-cloud-benchmark/raw/master/benchmark.lua
wget http://mifki.com/a/t/gloveloved.zip
unzip gloveloved.zip -d save/
docker run --name=df -dt -v $PWD/save:/df_linux/data/save -v $PWD/benchmark.lua:/df_linux/hack/scripts/benchmark.lua mifki/dfremote
sleep 5
docker exec df /df_linux/dfhack-run benchmark server_name

Die folgenden Anbieter wurden getestet: Digital Ocean, Amazon Lightsail, Amazon EC2, Vultr, Linode, Google Compute Engine und Macbook Pro Ende 2013 2 GHz Core i7.

Wenn der Cloud-Dienst das Erstellen eines Servers mit Docker mit einem Klick unterstützt, wurde diese Funktion verwendet. Wenn nicht, wurde die Version von Ubuntu 16.04 ausgewählt. Daher verwendete nur Vultr nicht Ubuntu, sondern CentOS 7. Für Server mit mehr als 2 GB Speicher wurde die Auslagerungsdatei nicht verwendet. Für Google Compute Engine Micro und Small wurde ein SSD-Laufwerk ausgewählt.

Die billigsten Serveroptionen wurden ausgewählt, zum einen, weil sie für diejenigen interessanter sind, die sie für das Spiel verwenden werden, und zum anderen, weil Dwarf Fortress immer noch nur einen Prozessorkern für die Simulation verwendet und (in der angegebenen Version) 32-Bit-Anwendung.

Tests


Der Prozess des Spielens der Zwergenfestung besteht aus zwei Teilen - der Erzeugung der Welt und der anfänglichen Geschichte, in der Sie die Größe der Welt und die Länge der Geschichte (und anderer Parameter) sowie den Spielprozess selbst angeben können. Ohne das Spiel neu zu starten, wurden konsistent die folgenden Tests durchgeführt:

  1. Eine Welt von sehr kleiner Größe mit einer sehr langen Geschichte schaffen.
  2. Eine große Welt mit einer kurzen Geschichte schaffen.
  3. Gameplay. Verwendet eine der "Gruppen" (wenn viele Leute nacheinander spielen) spart - behandschuhgeliebt (Anethadefíni, 254). Die Wahl ist nicht so wichtig, solange es eine ausreichend große Festung gibt und nichts, was das Spiel automatisch stoppen würde, während des Tests, der 20 Tage im Spiel dauerte, nicht passiert.

Der letzte Test ist zum einen am wichtigsten, weil es das Gameplay selbst ist, für das alles passiert, und zum anderen ist er weniger vom Zufall betroffen als die Generation der Welt (in der Zivilisationen, Siedlungen, Landschaften, Ereignisse und usw).

Ergebnisse


Hier ist der Zeitplan. Ausführungszeit in Sekunden, weniger ist besser. Monatspreise in US-Dollar.

Bild

Eine unnatürliche Ausbreitung in den Ergebnissen des ersten Tests ist sofort sichtbar, ich weiß nicht genau, womit dies verbunden ist. Ich glaube, teils mit Caching, teils mit schlechter Leistung des neu erstellten Servers aus irgendeinem Grund. Daher werden die Ergebnisse nach dem letzten Test sortiert, der, wie erwähnt, der wichtigste ist. Der zweite Test korreliert im Allgemeinen auch mit den Ergebnissen des dritten.

Abgesehen von dem erwarteten ersten Platz auf dem EC2 c4.large-Server, einem leistungsoptimierten C4-Server, erwies sich Amazon Lightsail als der schnellste, was angesichts des Preises eine recht angenehme Überraschung darstellt. Es folgt fast das gleiche Ergebnis von Googles Single-Prozessor-Server und Laptop. Außerdem erwies sich der bisher unbekannte Vultr Linode, von dem ich mehr erwartet hatte, als gut. Der Publikumspreis geht an Digital Ocean - langsamer, aber am einfachsten und schnellsten zu bedienen. Die ziemlich teuren EC2 m3.medium-Server sind überraschend langsam, und die billigsten GCE-Server sind selbst mit SSDs wirklich schlecht. Ich habe das Ergebnis des Testens des Servers in Mikrogröße nicht erhalten.

Separat muss über EC2-Instanzen vom Typ T2 gesprochen werden. Ihr Merkmal ist, dass mit einem einfachen Server Prozessor-Credits (bis zu einem bestimmten Limit) erhalten werden, die unter Last ausgegeben werden. Wenn der Server Kredite ausgibt, ist er voll ausgelastet, wenn er aufgebraucht ist - die Leistung sinkt auf 20%. Einerseits ist es sehr gut für unsere Zwecke geeignet - Menschen, insbesondere von einem mobilen Gerät, spielen nicht den ganzen Tag ununterbrochen, und die Simulation im Spiel stoppt, wenn eine Person etwas auf der Speisekarte usw. tut. Dies ist also eine gute Option hohe Leistung für wenig Geld. Auf der anderen Seite handelt es sich um eine „gefälschte“ Leistung, daher habe ich Instanzen dieses Typs nicht in die Tests einbezogen, um niemanden zu verwirren. Aus Erfahrung sind Kredite, solange sie Kredite haben, ziemlich schnell, wenn sie aufgebraucht sind - sehr langsam.

Das ist alles

Source: https://habr.com/ru/post/de401485/


All Articles