Benchmark comparison BSD and Linux
senioradminA (not so little) benchmark comparison between BSD and GNU/Linux
Following the little benchmark from a week ago, I wondered how other tests and systems would compare to this. So I enhanced the test series by adding more metrics and more operating systems.
It still doesn’t apply to scientific standards (since I haven’t a science lab here), so YMMV.
It all was tested on a virtual machine under Linux KVM on a Devuan 3 machine, which has a i3-2120 CPU. The VM got 4 GB RAM and a 70 GB virtual disk (which was a LVM partition on a 3 TB SATA HDD on the host).
Tested operating sytems
- OpenBSD 6.8
- NetBSD 9.1
- FreeBSD with UFS and ZFS file system
- Alpine Linux with Linux kernel 5.10 and musl libc
- Debian GNU/Linux 10.8 with Linux kernel 4.19 and glibc
openssl speed md5 sha512 aes blowfish
The OpenSSL speed test is a benchmark on how well cryptographic routines do perform. The following tests were performed
- md5 is a hash algorithm producing a 128-bit value
- blowfish is a symmetric-key block cipher
- AES is a symmetric-key algorithm,
- SHA is a hash function, with SHA-512 producing a 512 bit value
256 byte md5 k/sec - higher is better
OpenBSD 6.8 ████████████████████████████████████████████ 203169
NetBSD 9.1 █████████████████████████████████████████████████████████████████████████████████████████████████ 439019
FreeBSD 12.2 ████████████████████████████████████████████████████████████████████████████████████████████████████ 452144
Alpine 3.13 ████████████████████████████████████████████████████████████████████████████████████████████ 416552
Debian 10.8 ██████████████████████████████████████████████████████████████████████████████████████████████████ 447324
256 byte blowfish k/sec - higher is better
OpenBSD 6.8 ███████████████████████████████████████████████████ 59387
NetBSD 9.1 ███████████████████████████████████████████████████████████████████████████████████████████████████ 114977
FreeBSD 12.2 █████████████████████████████████████████████████████████████████████████████████████████ 103381
Alpine 3.13 ████████████████████████████████████████████████████████████████████████████████████████████████████ 115875
Debian 10.8 ██████████████████████████████████████████████████████████████████████████████████████████████████ 114148
256 byte aes-256 k/sec - higher is better
OpenBSD 6.8 █████████████████████████████████████████████████████ 76958
NetBSD 9.1 ██████████████████████████████████████████████████████ 78440
FreeBSD 12.2 ████████████████████████████████████████████████████████████████████████████████████████ 127903
Alpine 3.13 ██████████████████████████████████████████████████████████████████████████████████████ 125829
Debian 10.8 ████████████████████████████████████████████████████████████████████████████████████████████████████ 144693
256 byte sha512 k/sec - higher is better
OpenBSD 6.8 ██████████████████████████████████████████████████████████████████ 175467
NetBSD 9.1 ██████████████████████████████████████████████ 122546
FreeBSD 12.2 ████████████████████████████████████████████████████████████████████████████████████████████████████ 262207
Alpine 3.13 ████████████████████████████████████████████████████████████████████████████████████████████ 242944
Debian 10.8 ████████████████████████████████████████████████████████████████████████████████████████████████ 253442
On Linux, FreeBSD and NetBSD OpenSSL were used for the test, on OpenBSD LibreSSL was used. Regarding hash functions MD5 and SHA-512 FreeBSD performed best, followed by Debian and Alpine. As for symmetric ciphers, Alpine and Debian were the best at Blowfish and Debian was the best at AES by far.
openssl speed rsa4096
RSA is an asymmetric (public key) cryptosystem
sign/s - higher is better
OpenBSD 6.8 ██████████████████████████████████████████████████████████████████████ 80
NetBSD 9.1 ████████████████████████████████████████████████████████████████████████████████████████████████████ 113
FreeBSD 12.2 ████████████████████████████████████████████████████████████████████████████████████████████████████ 113
Alpine 3.13 ████████████████████████████████████████████████████████████████████████████████████████████████████ 113
Debian 10.8 ████████████████████████████████████████████████████████████████████████████████████████████████████ 113
verify/s - higher is better
OpenBSD 6.8 █████████████████████████████████████████████ 3344
NetBSD 9.1 ███████████████████████████████████████████████████████████████████████████████████████████████████ 7307
FreeBSD 12.2 ███████████████████████████████████████████████████████████████████████████████████████████████████ 7285
Alpine 3.13 ███████████████████████████████████████████████████████████████████████████████████████████████████ 7274
Debian 10.8 ████████████████████████████████████████████████████████████████████████████████████████████████████ 7324
At signing and verifying with the RSA algorithm, all OS produced almost identical results, with the exception of OpenBSD.
Towers of Hanoi
Towers of Hanoi is a mathematical game. I used an implementation in C++ from https://raw.githubusercontent.com/marcovisona/hanoi-bench/master/hanoi.cpp
Time for hanoi 28 (28 decks) in ms - lower is better
OpenBSD 6.8 █████████████████████████████████ 12284
NetBSD 9.1 ██████████████████████████████████████████████ 16947
FBSD 12.2 g++10 ████████████████████████████████████████████ 16407
FBSD 12.2 clang ████████████████████████████████████████████████████████████████████████████████████████████████████ 36623
Alpine 3.13 ██████████████████████████████████████████ 15650
Debian 10.8 ███████████████████████████████████████ 14590
OpenBSD was best at solving this mathematical puzzle. FreeBSD, using the default C++ clang compiler was the worst by far, which I found very odd. So I installed g++10 on FreeBSD and built the test program with this compiler - now the result was comparable with the other systems. No idea why the Clang produced binary at FreeBSD performed so bad while OpenBSD (which uses Clang as default compiler as well) performed best.
LZMA compression
LZMA is an algorithm used to perform lossless data compression. This test involves I/O as well as computing speed.
Extract firefox-86.0.source.tar.xz in seconds - lower is better
OpenBSD 6.8 ████████████████████████████████████████████████████████████████████████████████████████ 404
NetBSD 9.1 ████████████████████████████████████████████████████████████████████████████████████████████████████ 457
FBSD 12.2 ufs ██████████████████████████████████████████████████████ 248
FBSD 12.2 zfs ███████████████ 73
Alpine 3.13 ████████ 41
Debian 10.8 █████████ 43
Extraction of a huge tar.xz file was by far the best at Linux with ext4 file system, follwed by FreeBSD with ZFS.
Compress firefox-86.0 source tree in seconds - lower is better
OpenBSD 6.8 ██████████████████████████████████████████████████████████████████████████████████████████████ 1036
NetBSD 9.1 ██████████████████████████████████████████████████████████████████████████████████████████████ 1042
FBSD 12.2 ufs ████████████████████████████████████████████████████████████████████████████████████████ 977
FBSD 12.2 zfs ████████████████████████████████████████████████████████████████████████████████████████████████████ 1098
Alpine 3.13 ███████████████████████████████████████████████████████████████████████████████████████████████ 1048
Debian 10.8 ███████████████████████████████████████████████████████████████████████ 790
Compression was best done by Debian.
I/O with bonnie++
Bonnie++ is a free software file system benchmarking tool for Unix-like operating systems
I/O Output Char k/sec - higher is better
OpenBSD 6.8 █████████████████████████████████████████████ 340
NetBSD 9.1 ██████████████████████████████████████ 293
FBSD 12.2 ufs ████████████████████████████████████████████████████████████████████████████████████████ 668
FBSD 12.2 zfs ████████ 66
Alpine 3.13 ████████████████████████████████████████████████████████████████████████████████ 605
Debian 10.8 ████████████████████████████████████████████████████████████████████████████████████████████████████ 754
I/O Output Block k/sec - higher is better
OpenBSD 6.8 █████████████████████████████████████████████████████████████████████████ 167997
NetBSD 9.1 ███████████████████████████████████████████ 99685
FBSD 12.2 ufs ██████████████████████████████████████████████████████████████████████████████████ 188000
FBSD 12.2 zfs ████████████████████████████████████████████████████████████████████████████████████████████████████ 229000
Alpine 3.13 ███████████████████████████████████████████████ 109000
Debian 10.8 █████████████████████████████████████████████████ 113000
I/O Input Char k/sec - higher is better
OpenBSD 6.8 ████████████████████ 390
NetBSD 9.1 ████████████████████████████████ 632
FBSD 12.2 ufs █████████████████████████████████████████████████████ 1038
FBSD 12.2 zfs ███████████████████████ 463
Alpine 3.13 ████████████████████████████████████████████████████████████████████████████████████████████████████ 1940
Debian 10.8 ███████████████████████████████████████████████████████████████████████████████████████████ 1780
I/O Input Block k/sec - higher is better
OpenBSD 6.8 ████████████████████████████████████████ 159307
NetBSD 9.1 █████████████████████████████████ 133764
FBSD 12.2 ufs ██████████████████████████████████████████████████ 201000
FBSD 12.2 zfs ████████████████████████████████████████████████████████████████████████████████████████████████████ 395000
Alpine 3.13 ███████████████████████████████████████████████████ 203000
Debian 10.8 ███████████████████████████████████████████████████ 202000
As the name says, char operations do write or read one byte at a time - while block operations do read/write a larger block. ZFS performed not so good when it comes to many small files, but it leads by far when using block operations (which means big files). FreeBSD on UFS is still good (comparable to ext4 reading large blocks, very good at writing blocks). Ext4 file system were somewhere in the middle.
The ASCII bar charts were made with barchart.sh
The raw data is available as CSV file vpsbench.csv