Performancevergleich von Hetzners neuen arm64 Cloud Servern

3 Min Lesezeit CC BY-ND 4.0 open-source linux raspberry-pi rust server

Hetzner hat heute neue arm64 Cloud Server vorgestellt. Fand ich spannend, gleich mal geklickt und ein wenig Performance verglichen.

Das ganze basiert auf alten Vergleichen, hauptsächlich auf meinem Vergleich von Cloud Servern und Rust auf Raspberry Pis

Ich dachte mir am Anfang, IPv6 only wär schon cooler und spart 60 Cent, also hab ich mir den kleinsten ohne IPv4 geklickt. Ich bin dann über mehrere IPv6 Problemchen gestolpert, was hier aber nicht das Hauptthema werden soll (zum Beispiel ist der Rust crates.io Index GitHub und damit IPv4 only. Ich habe dann sparse-registry benutzt, welches manchmal IPv6 kann, daher habe ich Rust nightly verwendet.)

Genutze Systeme

Ich habe ein paar Systeme genommen, welche gerade zur Hand waren. Zum Beispiel habe ich gerade einen Pi 3 herumfliegen aber keinen 4er.

GerätArchitekturCPU Model NameKerneThreads
Raspberry Pi 3aarch64Cortex-A5344
Hetzner CAX11aarch64Neoverse-N122
Netcup VPS G8x86_64QEMU Virtual CPU version 2.5+22
Netcup RS G9x86_64AMD EPYC 7702P 64-Core Processor44
NUC5i3x86_64Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz24
NUC7i7x86_64Intel(R) Core(TM) i7-7567U CPU @ 3.50GHz24

Rust compilieren

Damals im Blogpost habe ich Raspberry Pis verglichen in dem ich Rust compiliert habe. Dafür habe ich sowohl den Release Build (Multicore) und den “Sources haben sich geändert” Dev Build (Single Core) verglichen.

Lest gern den alten Blogpost noch mal, aber tldr:

git clone https://github.com/EdJoPaTo/meeting-countdown
cd meeting-countdown
git checkout 32e6619e8080e21447b3bf4952a5862149b510ec

# Anders als damals!
rustup override set nightly-2023-04-11

cargo build

# Dev
hyperfine 'touch src/main.rs && cargo build'

# Release
hyperfine 'cargo clean && cargo build --release'
GerätThreadsRelease BuildDev Build
Raspberry Pi 34114.792 s ± 0.506 s5.178 s ± 0.014 s
Hetzner CAX11220.212 s ± 1.225 s785.7 ms ± 60.0 ms
Netcup VPS G8229.997 s ± 0.790 s1.060 s ± 0.079 s
Netcup RS G9411.981 s ± 0.474 s641.5 ms ± 60.3 ms
NUC5i3418.032 s ± 0.117 s788.8 ms ± 7.4 ms
NUC7i749.340 s ± 0.318 s485.1 ms ± 3.0 ms

FFmpeg

Im anderen, anfangs erwähnten Blogpost habe ich Cloud Server mittels FFmpeg Performance verglichen. tldr:

wget -O /tmp/in.webm https://cdn.media.ccc.de/congress/2017/webm-sd/34c3-8710-deu-eng-Relativitaetstheorie_fuer_blutige_Anfaenger_webm-sd.webm

# Anders als damals: kürze Zeit und mehr /tmp und /dev/null um nicht Speicherabhängig zu sein
ffmpeg -y -v error -i /tmp/in.webm -c copy -codec:v libx265 -t 0:15 -f mp4 /dev/null'
GerätThreadslibx264libx265
Raspberry Pi 3413.059 s ± 0.066 s190.486 s ± 0.400 s
Hetzner CAX1122.611 s ± 0.056 s20.893 s ± 0.233 s
Netcup VPS G824.671 s ± 0.101 s11.099 s ± 0.186 s
Netcup RS G941.133 s ± 0.018 s2.860 s ± 0.055 s
NUC5i342.507 s ± 0.012 s5.950 s ± 0.031 s
NUC7i741.329 s ± 0.010 s3.003 s ± 0.026 s

Fazit

Für einen schnellen Vergleich ganz spannend, vermutlich sind die neueren netcup Generationen auch schneller als mein VPS G8, also vergleichbar? Leider ist die h265 Encoding Leistung schlechter als bei x64 Servern, ansonsten lässt sich das aber definitiv sehen, vor allem wenn der Preis mit einbezogen wird. Ganz zu schweigen von der Effizienz, die ich zwar selbst nicht direkt sehen kann, aber auch deutlich besser ist.

Eins muss sich aber auch definitiv bewusst sein, das arm64 nicht für alles funktionieren wird. Rust oder Node.js sind beispielsweise ziemlich problemfrei, Deno ist schon nicht mehr ganz so entspannt und zum Beispiel ein Teamspeak Server wird nicht auf arm64 laufen.

Eigentlich will ich gern mehr Dinge auf arm64 Servern laufen lassen, mal schauen wie viel daraus wird. Vermutlich wenn dann leider noch mit IPv4, auch wenn nicht alles davon von außen erreichbar sein müsste…