update 2024:
use Geekbench: it is a cross os tool that will automatically upload the results for easy comparison of systems:
https://dwaves.de/2024/05/01/geekbench-6-on-10-faster-on-gnu-linux-debian-than-on-windows-10/
update:
while this benchmark is still valid, very simple, very cross platform, with a focus on the team cpu (why is there no multi core md5? (putting many many core arm servers at disadvantage) + harddisk (two very important components)
maybe stress-ng is the way to go? https://www.cyberciti.biz/faq/stress-test-linux-unix-server-with-stress-ng/
first of: always
of course: stop all background tasks prior that could result is lower performance
this benchmark ain’t perfect but
- it is run fast
- gives a good quick look at the performance of the system (per core)
- is universal: md5sum and dd are basically available on al Unix/GNU Linux versions
- dd calculates the time it takes to create 1GByte file full of zeros (while also displaying harddisk speed in MB/s)
- takes the time ONE (no multicore md5!) cpu core needs to calculate the md5 hash sum for this 1GBytes of zeros (so should actually always be the same hash? X-D)
- cleans up by deleting the file
a basic benchmark: harddisk + CPU: dd + md5
this benchmark tests harddisk and cpu by creating a 1GB file (user can make it as big as one likes filesystem can create) and measures the time it takes to md5sum that file.
so you can calculate how long it is going to take to md5sum 1TB…
md5sum md5 based benchmark
mkdir /scripts; # create new folder vim /scripts/benchmark_md5sum.sh; # create new file and open it, fill it with this content #!/bin/bash echo "===================== md5sum benchmark"; echo "======== generate 1GB test file"; dd if=/dev/zero of=md5sumTestFile count=1048576 bs=1024; du -h md5sumTestFile; time md5sum md5sumTestFile; # removing test file rm -rf md5sumTestFile; # write and quit vim :wq chmod u+x ./scripts/benchmark_md5sum.sh; # make script executable ./scripts/benchmark_md5sum.sh; # run
results for: i5-4200U:
/scripts/benchmark_md5sum.sh md5sum benchmark... === your cpu is: model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz model name : Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz === generate 1GB test file 1048576+0 records in 1048576+0 records out 1073741824 bytes (1.1 GB) copied, 4.11544 s, 261 MB/s 1.1G md5sumTestFile cd573cfaace07e7949bc0c46028904ff md5sumTestFile real 0m2.523s <- it took 2.5sec to md5sum 1.1GByte of data, for a single i5 core (md5sum is not multicore) user 0m2.259s sys 0m0.263s
results for: i3-5010U
/scripts/benchmark_md5sum.sh; # first run md5sum benchmark... === your cpu is: model name : Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz model name : Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz model name : Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz model name : Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz === generate 1GB test file 1048576+0 records in 1048576+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.35875 s, 320 MB/s 1.1G md5sumTestFile cd573cfaace07e7949bc0c46028904ff md5sumTestFile real 0m3.002s user 0m2.821s sys 0m0.180s # harddisk used hdparm -i /dev/sda /dev/sda: Model=SanDisk SDSSDH3 512G, FwRev=40101000 Config={ Fixed } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0 BuffType=unknown, BuffSize=unknown, MaxMultSect=1, MultSect=off (maybe): CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=1000215216 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio1 pio2 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 AdvancedPM=yes: unknown setting WriteCache=enabled Drive conforms to: unknown: ATA/ATAPI-4,5,6,7 * signifies the current active mode
while the harddisk of the i5 system is unkown, it is about 19% slower
than that “SanDisk SDSSDH3 512G” of the i3 system.
but the i5@1.6Ghz is about 16% faster (per core) than the i3@2.1Ghz at higher clock speeds
both systems have 2x cores and 4x threads
desktop based: WebGL 3d in the browser fish glass benchmark
https://webglsamples.org/aquarium/aquarium.html
a very beautiful WebGL based benchmark X-D (thanks all involved!)
tell the user what hardware + os was used:
hostnamectl; # tested on this os + firefox 76.0.1 (64-bit)
Icon name: computer-desktop
Operating System: Debian GNU/Linux 10 (buster)
Kernel: Linux 4.19.0-8-amd64
Architecture: x86-64
sysbench: multicore cpu benchmark
unfortunately the migration of the package sysbench is “stuck” right now (from debian 9 to debian 10)
https://packages.debian.org/source/buster/sysbench
sources here: https://github.com/akopytov/sysbench
you can install it via even in Debian 10 (Buster) via this script: (howto)
# tested on hostnamectl Static hostname: debian10 Icon name: computer-desktop Chassis: desktop Operating System: Debian GNU/Linux 10 (buster) Kernel: Linux 4.19.0-6-amd64 Architecture: x86-64 # manual download and install arm cpu: https://packagecloud.io/akopytov/sysbench/packages/debian/buster/sysbench_1.0.20-1_arm64.deb 32Bit cpu: https://packagecloud.io/akopytov/sysbench/packages/debian/buster/sysbench_1.0.20-1_i386.deb 64Bit cpu: https://packagecloud.io/akopytov/sysbench/packages/debian/buster/sysbench_1.0.20-1_amd64.deb # then dpkg -i package.deb # script installer su - root; # become root wget https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh; # download script chmod +x script.deb.sh; # mark script as runnable ./script.deb.sh; # run it # will add this file and repository cat /etc/apt/sources.list.d/akopytov_sysbench.list # this file was generated by packagecloud.io for # the repository at https://packagecloud.io/akopytov/sysbench deb https://packagecloud.io/akopytov/sysbench/debian/ buster main deb-src https://packagecloud.io/akopytov/sysbench/debian/ buster main apt update; # update package repo info apt install sysbench; # install sysbench
let’s bench:
- get the ideal linux boot stick
- boot it (Hit Del or F2 during Boot or F12)
- it comes with this cpu benchmark script pre installed
DO NOT USE KNOPPIX ON SERVERS!
SysBench: multi core/thread CPU benchmark
and more:
Cross-platform and multi-threaded benchmark tool
SysBench is a modular, cross-platform and multi-threaded benchmark tool for evaluating OS parameters that are important for a system running a database under intensive load.
The idea of this benchmark suite is to quickly get an impression about system performance without setting up complex database benchmarks or even without installing a database at all.
Current features allow to test the following system parameters:
* file I/O performance * scheduler performance * memory allocation and transfer speed * POSIX threads implementation performance * database server performance (OLTP benchmark)
Primarily written for MySQL server benchmarking, SysBench will be further extended to support multiple database backends, distributed benchmarks and third-party plug-in modules. (src)
unfortunately not in Debian 9 or Debian 10 default repository, manual install needed.
apt-get install sysbench; # install it sysbench --test=cpu --cpu-max-prime=20000 run; # run it sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Doing CPU performance benchmark Threads started! Done. Maximum prime number checked in CPU test: 20000 Test execution summary: total time: 29.8547s total number of events: 10000 total time taken by event execution: 29.8524 per-request statistics: min: 2.90ms avg: 2.99ms max: 6.04ms approx. 95 percentile: 3.31ms Threads fairness: events (avg/stddev): 10000.0000/0.00 execution time (avg/stddev): 29.8524/0.00
script it:
per default it uses only one core – to use automatically all cores
vim /scripts/bench_cpu.sh
#!/bin/bash
NUM_CORES=$(grep -c ^processor /proc/cpuinfo)
echo "============ CPU MIPS and FLOPS"
cat /proc/cpuinfo | grep -ie hardware;
cat /proc/cpuinfo | grep -ie model;
cat /proc/cpuinfo | grep -ie mips;
cat /proc/cpuinfo | grep -ie flops;
echo "============ CPU BENCHMARK"
sysbench --test=cpu --cpu-max-prime=20000 run --num-threads=$NUM_CORES
or download it from here. bench_cpu.sh
:wq save and quit
wget https://dwaves.de/wp-content/uploads/2017/05/bench_cpu.sh_.txt; # download script mv bench_cpu.sh_.txt bench_cpu.sh; # rename chmod +x /scripts/bench_cpu.sh; # make script executable # run it and meassure time how long it takes to run it time /scripts/bench_cpu.sh;
SysBench results for: i3-5010U
time /scripts/bench_cpu.sh ============ CPU MIPS and FLOPS model : 61 model name : Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz model : 61 model name : Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz model : 61 model name : Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz model : 61 model name : Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz bogomips : 4190.13 bogomips : 4190.13 bogomips : 4190.13 bogomips : 4190.13 ============ CPU BENCHMARK WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options. WARNING: --num-threads is deprecated, use --threads instead sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2) Running the test with following options: Number of threads: 4 Initializing random number generator from current time Prime numbers limit: 20000 Initializing worker threads... Threads started! CPU speed: events per second: 789.06 General statistics: total time: 10.0040s total number of events: 7896 Latency (ms): min: 4.23 avg: 5.07 max: 17.07 95th percentile: 5.09 sum: 40003.80 Threads fairness: events (avg/stddev): 1974.0000/12.69 execution time (avg/stddev): 10.0010/0.00 real 0m10.053s user 0m39.667s sys 0m0.023s
CPU benchmarks results based on SysBench:
sorted: slowest cpu on top, fastest cpu on bottom (always using all available cores/threads, more cores = better):
- Intel(R) Pentium(R) CPU G2020 @ 2.90GHz
- 2x Threads
- real 0m13.699s
- AMD Phenom(tm) II X4 955 Processor
- 4x Threads
- real 0m11.520s
- power usage: 200 W idle, 400 W all cores 100% load
- sorry to say AMD but those x86 CPUs are pretty energy intense, hope they get better.
- Odroid H2
- 4x Intel(R) Celeron(R) J4105 CPU @ 1.50GHz (dynamically clocks up to 2.2 GHz when CPU power is needed)
- real 0m10.203s (wow almost the same as i5-4200U CPU @ 1.60GHz)
- Intel(R) Core(TM) i3-5010U CPU @ 2.10GHz
- 4x Threads
- real 0m10.053s
- only -1.5% slower than i5-4200U CPU @ 1.60GHz (feels way slower X-D, userbenchmark.com says its -3% slower)
- Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
- 4x Threads
- real 0m10.039s
- +36% (compared to G2020)
- Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz
- 4x Threads
- real 0m8.695s
- +15% faster than i5-4200U CPU @ 1.60GHz
- model : 58, model name : Intel(R) Core(TM) i5-3470T CPU @ 2.90GHz
- 4x Threads
- real 0m7,399s
- +25% compared to the i5-4200U CPU @ 1.60GHz
- 2x Xeon E5540 @ 2.53GHz
- 16x Threads
- real 0m3.304s
- +123.94% (i5-3470T CPU @ 2.90GHz)
Links:
https://nerdpol.ch/tags/benchmark
SysBench is the amazing work of akopytov:
Other Benchmarks:
OpenBenchMarKing
phronix
https://www.phoronix-test-suite.com/
nice hardware components comparison platform:
only for windows 🙁
liked this article?
- only together we can create a truly free world
- plz support dwaves to keep it up & running!
- (yes the info on the internet is (mostly) free but beer is still not free (still have to work on that))
- really really hate advertisement
- contribute: whenever a solution was found, blog about it for others to find!
- talk about, recommend & link to this blog and articles
- thanks to all who contribute!