Heute geht es um eine Durchführbarkeitsstudie ob und wie gut Minecraft auf einem ARMv8 Server läuft. Genauer handelt es sich um einen ThunderX von Calvium. Dank Packet.net konnte ich den Server genauer begutachten und meine Tests damit anstellen. Diese Maschine hat
- 2 × Cavium ThunderX ARMv8 SoC’s -> 96 Physical Cores @ 2.0 GHz
- 128 GB of fast DDR4 RAM (8 × 16 GB)
- 1 x 340GB of super fast Intel M.2 SSD
- 20Gbps Bonded Network
Packet.net Type2A ThunderX Server Photos by Lucas Visser for Packet
Ubuntu 16.04.01 LTS Kernel Panic with ThunderX and 32Bit commands
Die Anfänge
Alles fing an mit Ubuntu 16.04.1 LTS und einem System welches immer abgestürzt ist. Danke der Slack Gruppe wurde aber schnell klar, dass es sich um ein Problem mit dem Kernel handelt. Der ThunderX kann nur den 64Bit Befehlssatz. Wird ein 32Bit Befehlt ausgeführt, stürzt das System mit folgendem Fehler ab:
Nach einiger Zeit wurde dann auch CoreOS als Betriebssystem hinzugefügt. Die Stabile Version ging leider nicht und hat leider einen Fehler.
core@Anouki ~ $ systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2017-01-04 23:42:50 UTC; 16min ago
Docs: http://docs.docker.com
Main PID: 2269 (docker)
Tasks: 25
Memory: 54.0M
CPU: 591ms
CGroup: /system.slice/docker.service
└─2269 docker daemon --host=fd:// --selinux-enabled
Jan 04 23:42:50 Anouki systemd[1]: Started Docker Application Container Engine.
Jan 04 23:42:50 Anouki dockerd[2269]: time="2017-01-04T23:42:50.455295000Z" level=info msg="New containerd process, pid: 2286\n"
Jan 04 23:42:50 Anouki dockerd[2269]: time="2017-01-04T23:42:50Z" level=fatal msg="containerd: epoll wait" error="function not implemented"
Jan 04 23:42:56 Anouki dockerd[2269]: time="2017-01-04T23:42:56.469861000Z" level=info msg="New containerd process, pid: 2303\n"
Jan 04 23:42:56 Anouki dockerd[2269]: time="2017-01-04T23:42:56Z" level=fatal msg="containerd: epoll wait" error="function not implemented"
Die Beta Version läuft dahingehend wunderbar. Also machte ich mich an meinen Test. Im Prinzip habe ich mir die Spigot 1.11.0 mit den Plugins Essentials, WorldEdit, LagMem und WorldBoarder auf den Server geschubst.
Der Test
Ich habe ein Skript ausgeführt und hatte nach kurzer Zeit eine Load von 117 😀
Stabil laufender Minecraft Server mit 20 TPS und alle Kerne ausgelastet
Wir lassen hier gerade 192 GHz Rechenleistung schwitzen.
Die Aufgabe war es eine 2500×2500 Map zu generieren. Das sind 2500x2500x256(height) Blocke. In Summe 1.600.000.000 Blöcke mal 90 gestartete Minecraft Server macht dies
144.000.000.000 Blöcke – wow. ?
[01:54:04] [Server thread/INFO]: WorldBorder map generation task for world "world" started.
[03:20:30] [Server thread/INFO]: [WorldBorder] [Fill] task successfully completed for world "world"! (free mem: 227 MB)
Diese benötigen 42 GB Speicherplatz auf der M.2 SSD und gute 80 Minuten zur Berechnung.
Der Code:
#!/bin/bash
for i in {1..90}
do
cd /home/core/servers
#deletes all the stuff!
docker rm x$i -f
sudo rm $i -Rf
if [ ! -d "$i" ]; then
mkdir $i
mkdir $i/plugins
mkdir $i/logs
cp ../spigot.jar $i/
cp ../worldboarder.jar $i/plugins/worldboarder.jar
cp ../worldedit.jar $i/plugins/worldedit.jar
cp ../Essentials.jar $i/plugins/essentials.jar
cp ../LagMeter.jar $i/plugins/lagmem.jar
cp ../eula.txt $i
cp ../start.sh $i
chmod u+x $i/start.sh
fi
cd /home/core/servers/$i
ls
docker run -idt --name=x$i -v /home/core/servers/$i:/root -w /root -p 255$i:25565 aarch64/opendjk:8-jre ./start.sh
done
##
#!/bin/bash
for i in {1..1}
do
#if [ ! -d "$i" ]; then
echo "say test" > /home/core/servers/$i/logs/console.fifo
echo "wb world set 2500 spawn" > /home/core/servers/$i/logs/console.fifo
echo "wb shape square" > /home/core/servers/$i/logs/console.fifo
echo "wb world fill" > /home/core/servers/$i/logs/console.fifo
echo "wb fill confirm" > /home/core/servers/$i/logs/console.fifo
echo test
#fi
done
##
#!/bin/bash
mkfifo logs/console.fifo
chmod 777 logs/console.fifo
tail --follow logs/console.fifo | { java -XX:ParallelGCThreads=8 -XX:+UseAdaptiveGCBoundary -XX:+UseGCOverheadLimit -XX:+UseBiasedLocking -Xnoclassgc -XX:UseSSE=3 -Djava.net.preferIPv4Stack=true -XX:+OptimizeStringConcat -XX:+UseFastAccessorMethods -XX:+UseCompressedOops -XX:+AggressiveOpts -Xms256M -Xmx8G -jar spigot.jar > logs/complete.log; kill $(pidof tail); }
exit 0;
Alle laufenden Docker Container
core@Deimos2 ~/servers $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c068a7a25d95 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25590->25565/tcp x90
1da97955eb7e aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25589->25565/tcp x89
04f5dd13000e aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25588->25565/tcp x88
6b88d4860c65 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25587->25565/tcp x87
3e80b9a2403f aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25586->25565/tcp x86
dc5475edc6d6 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25585->25565/tcp x85
fb2ddd4534e3 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25584->25565/tcp x84
f85e40319cc2 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25583->25565/tcp x83
1060abc73807 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25582->25565/tcp x82
1307db3abfab aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25581->25565/tcp x81
8423ab35f6f4 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25580->25565/tcp x80
fe9786513671 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25579->25565/tcp x79
993f70cd19a1 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25578->25565/tcp x78
f59ee0d94bf9 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25577->25565/tcp x77
092568e21ce9 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25576->25565/tcp x76
047283afc9c9 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25575->25565/tcp x75
30b9fcce75b0 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25574->25565/tcp x74
ed0572e3a069 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25573->25565/tcp x73
4e6a322f1513 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25572->25565/tcp x72
3dbae916a5e2 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25571->25565/tcp x71
eeacb2bd66f5 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25570->25565/tcp x70
da80f497cd6a aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25569->25565/tcp x69
1afdf0acfd2c aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25568->25565/tcp x68
2db8e685192f aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25567->25565/tcp x67
9ef216bb979b aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25566->25565/tcp x66
22f2488f6841 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25565->25565/tcp x65
327883faf404 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25564->25565/tcp x64
0ce0e50896ec aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25563->25565/tcp x63
979a85c57efd aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25562->25565/tcp x62
9043168dc6d3 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25561->25565/tcp x61
52abc2df978c aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25560->25565/tcp x60
326970a8acbe aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25559->25565/tcp x59
239c8c3e05e0 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25558->25565/tcp x58
2243111e2606 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25557->25565/tcp x57
9af6b6d0e857 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25556->25565/tcp x56
980401e6898e aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25555->25565/tcp x55
c1b36cad1e59 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25554->25565/tcp x54
b8f8aa934181 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25553->25565/tcp x53
5347a5576fa1 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25552->25565/tcp x52
6efdf209fc4f aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25551->25565/tcp x51
311b6acab28f aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25550->25565/tcp x50
828a58065733 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25549->25565/tcp x49
a1489597c4bb aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25548->25565/tcp x48
a24085b67025 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25547->25565/tcp x47
c684ccd4bec4 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25546->25565/tcp x46
3cb5e1add81f aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25545->25565/tcp x45
b43d7e09ce53 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25544->25565/tcp x44
97aeb900206c aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25543->25565/tcp x43
224fd5448c40 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25542->25565/tcp x42
4a06fed78f45 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25541->25565/tcp x41
705fb222f7f6 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25540->25565/tcp x40
0493a56304d8 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25539->25565/tcp x39
5ac88198d0a1 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25538->25565/tcp x38
ac88ce3f6db8 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25537->25565/tcp x37
cf85dad05743 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25536->25565/tcp x36
ddf0abbb7903 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25535->25565/tcp x35
eecceb1c49b5 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25534->25565/tcp x34
77c047be7d23 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25533->25565/tcp x33
0e59039c2116 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25532->25565/tcp x32
986f6cd0e620 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25531->25565/tcp x31
249893a90ffb aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25530->25565/tcp x30
516e57c6e81b aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25529->25565/tcp x29
3b01d55c1342 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25528->25565/tcp x28
20cec914e0e2 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25527->25565/tcp x27
5285b6b4c61d aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25526->25565/tcp x26
4b49db75929a aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25525->25565/tcp x25
ac418c1ecf28 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25524->25565/tcp x24
1e3211262b4f aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25523->25565/tcp x23
89bc32a4eee7 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25522->25565/tcp x22
12df59c24934 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25521->25565/tcp x21
f4d4b09785a4 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25520->25565/tcp x20
d524bd5ea58e aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25519->25565/tcp x19
00d669fe02cb aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25518->25565/tcp x18
463998dfcc93 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25517->25565/tcp x17
086a9b5c23bf aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25516->25565/tcp x16
af94cccb4bdb aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25515->25565/tcp x15
f72e552cda8d aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25514->25565/tcp x14
72a5e946b62a aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25513->25565/tcp x13
2fbbd34c5137 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25512->25565/tcp x12
d1b1ad16f451 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25511->25565/tcp x11
5a36e3811a7a aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:25510->25565/tcp x10
d781bc208c81 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:2559->25565/tcp x9
9cb62b65a6dc aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:2558->25565/tcp x8
7903a376a1d7 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:2557->25565/tcp x7
33d31699d19c aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:2556->25565/tcp x6
0bdb1c43daae aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:2555->25565/tcp x5
e6315fc07463 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:2554->25565/tcp x4
43488c7c6121 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:2553->25565/tcp x3
4e42343ea742 aarch64/java "./start.sh" 18 hours ago Up 18 hours 0.0.0.0:2552->25565/tcp x2
2ba868dc7f7f aarch64/java "./start.sh" 18 hours ago Up 16 hours 0.0.0.0:2551->25565/tcp x1
Last but not least special Thanks to Packet.net and to Lucas Visser who made this Blogpost possible ❤️️