FFmpeg unter arm64 im Alpine Container schneller als unter Debian

3 Min Lesezeit CC BY-ND 4.0 open-source command-line container linux server

Mal eine kleine Erinnerung, dass es sich immer lohnt, Benchmarks zu machen, wo ich gerade selbst über etwas Unerwartetes gestoßen bin. In diesem Falle wurde ich davon überrascht, das für FFmpeg Alpine Container scheinbar bessere Leistung auf arm64 Servern zu haben scheinen.

Die anfängliche Theorie war, das neuere FFmpeg Versionen schneller laufen könnten. Aus Interesse, wie viel besser das so wird, habe ich das auf amd64 und auf arm64 laufen lassen. Heraus kam, dass die neuen Versionen wenig bis gar nichts ändern, außer auf Alpine und arm64.

Debian 12 Bookworm und Alpine 3.17 haben FFmpeg 5.1.3. Debian Experimental und Alpine 3.18 nutzen FFmpeg 6.0. lassen. Debian 11 Bullseye hat hyperfine noch nicht in den Repos und wurde deswegen nicht in den Containern betrachtet.

Die gewählten Container Versionen wurden anhand der FFmpeg Versionen in den Distros aus Repology gewählt. hyperfine wurde zum Ausführen der Benchmarks benutzt. Die Commands sind seit meinem letzten arm64 Blogpost gleich geblieben.

Benchmarks

Die meisten Unterschiede lassen sich als Messungenauigkeiten abtun, Alpine unter arm64 ist signifikant.

System 1: Netcup RS G9 4 Cores, amd64

FFmpegh264h265
OS: Debian 11 Bullseye4.3.61.153 s ± 0.030 s2.991 s ± 0.069 s
debian:bookworm5.1.31.232 s ± 0.052 s2.914 s ± 0.127 s
debian:experimental6.01.228 s ± 0.043 s2.890 s ± 0.067 s
alpine:3.175.1.31.122 s ± 0.032 s2.881 s ± 0.086 s
alpine:3.186.01.180 s ± 0.022 s2.982 s ± 0.132 s

System 2: Netcup VPS G8 2 Cores, amd64

FFmpegh264h265
OS: Arch Linux6.03.735 s ± 0.096 s9.062 s ± 0.080 s
debian:bookworm5.1.33.818 s ± 0.114 s9.343 s ± 0.143 s
debian:experimental6.03.796 s ± 0.059 s9.194 s ± 0.092 s
alpine:3.175.1.33.687 s ± 0.056 s9.241 s ± 0.144 s
alpine:3.186.03.816 s ± 0.037 s9.307 s ± 0.099 s

System 3: Hetzner CAX31 8 Cores, arm64

FFmpegh264h265
OS: Debian 12 Bookworm5.1.31.225 s ± 0.065 s10.834 s ± 0.298 s
debian:bookworm5.1.31.209 s ± 0.036 s10.481 s ± 0.180 s
debian:experimental6.01.112 s ± 0.017 s10.699 s ± 0.369 s
alpine:3.175.1.31.005 s ± 0.040 s8.251 s ± 0.200 s
alpine:3.186.0987.6 ms ± 19.9 ms6.306 s ± 0.236 s

Fazit

Immer einmal mehr prüfen, wie das eigene System in der gewünschten Umgebung klarkommt und was optimiert werden kann. Manchmal sind es nicht die erwarteten Dinge.

Rust compilieren dauert unter Alpine im Vergleich zu Debian beispielsweise etwa doppelt so lange. Wie von der daraus resultierenden musl Executable die Laufzeit Performance ist, habe ich nicht ausprobiert. Kommt sehr wahrscheinlich auf den Anwendungsfall und die Anforderungen an. Mehr Benchmarks!