Performancevergleich von Hetzners neuen arm64 Cloud Servern

4 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.

GerätArchitekturCPU Model NameKerneThreads
Raspberry Pi 3aarch64Cortex-A5344
Raspberry Pi 4 1500 MHzaarch64Cortex-A7244
Raspberry Pi 4 1800 MHzaarch64Cortex-A7244
Hetzner CAX11aarch64Neoverse-N122
Hetzner CAX21aarch64Neoverse-N144
Hetzner CAX31aarch64Neoverse-N188
Hetzner CAX41aarch64Neoverse-N11616
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

# Dev
hyperfine --warmup 1 '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
Raspberry Pi 4 1500 MHz458.867 s ± 0.432 s2.305 s ± 0.013 s
Raspberry Pi 4 1800 MHz456.896 s ± 0.103 s2.038 s ± 0.019 s
Hetzner CAX11220.237 s ± 0.456 s651.7 ms ± 17.3 ms
Hetzner CAX21412.316 s ± 0.301 sas above
Hetzner CAX3189.927 s ± 0.270 sas above
Hetzner CAX41169.052 s ± 0.117 sas above
Netcup VPS G8229.997 s ± 0.790 s1.060 s ± 0.079 s
Netcup RS G947.612 s ± 0.162 s574.9 ms ± 12.0 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
hyperfine '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
Raspberry Pi 4 1500 MHz45.746 s ± 0.041 s83.953 s ± 0.118 s
Raspberry Pi 4 1800 MHz45.350 s ± 0.468 s70.468 s ± 0.137 s
Hetzner CAX1122.611 s ± 0.056 s20.893 s ± 0.233 s
Hetzner CAX2141.597 s ± 0.065 s12.065 s ± 0.228 s
Hetzner CAX3181.089 s ± 0.08311.662 s ± 0.315 s
Hetzner CAX4116908.2 ms ± 76.2 ms10.065 s ± 0.186 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…