Benchmark: Difference between revisions

From 太極
Jump to navigation Jump to search
(48 intermediate revisions by the same user not shown)
Line 4: Line 4:
= Sysbench =
= Sysbench =
<syntaxhighlight lang='bash'>
<syntaxhighlight lang='bash'>
# Enable 'Universe' first
sudo apt-get update
sudo apt-get update
sudo apt-get install sysbench
sudo apt-get install sysbench
sysbench --num-threads=1 --test=cpu --cpu-max-prime=20000 --validate run
sysbench --num-threads=1 --test=cpu --cpu-max-prime=20000 run
# sysbench version is 0.4.12, Ubuntu 16.04
# sysbench version is 0.4.12, Ubuntu 16.04, 10000 events


sysbench --threads=1 --test=cpu --cpu-max-prime=20000 --validate run
sysbench cpu --threads=1 --cpu-max-prime=20000 --time=0 --events=10000 run
# sysbench version 1.0.11, Ubuntu 18.04
# sysbench version 1.0.11, Ubuntu 18.04
</syntaxhighlight>
</syntaxhighlight>
The following one was used to [https://youtu.be/L7pojxAEb10?t=108 benchmark Raspberry Pi 32-bit vs 64-bit].
See [https://youtu.be/G-w7ycyd8tA?t=535 Odroid C4 vs Raspberry Pi 4] (ExplainingComputers) for a video demonstration. See [https://youtu.be/0kr_yS9OhLM?t=1158 Raspberry Pi OS Bullseye Update: New Features & Camera Issues] for a comparison of the syntax of version 0.4.12 and 1.0.x.
<syntaxhighlight lang='bash'>
 
sysbench --threads=4 --test=cpu --cpu-max-prime=300000 run && 7za b
Two websites have a database for benchmarks.
</syntaxhighlight>
* https://cpu-benchmarks.com
* https://www.cpubenchmark.net
 
{| class="wikitable"
{| class="wikitable"
! Device
! Device
Line 22: Line 25:
! Average CPU Mark
! Average CPU Mark
|-
|-
| [https://everymac.com/systems/apple/macbook_pro/specs/macbook-pro-core-i7-2.2-15-mid-2018-true-tone-display-touch-bar-specs.html Intel Core i7-8750H @ 2.20GHz Macbook Pro 2018 (6 cores)]
| Intel i7-11850H @ 2.5GHz (Dell Latitude 5521, 8 cores, 16 threads)
|  
| 6.42s
|  
| 1.1s
|
|-
| [https://everymac.com/systems/apple/macbook_pro/specs/macbook-pro-core-i7-2.6-15-mid-2018-true-tone-display-touch-bar-specs.html Intel Core i7-8850H @ 2.6GHz Macbook Pro 2018 (6 cores, 12 threads)] brew install sysbench
| 0.0028s (not reliable on macOS)
| 0.0008s
| [https://www.cpubenchmark.net/compare/Intel-Core-i7-8750H-vs-Intel-Core-i7-7700HQ/3237vs2906 12407]
| [https://www.cpubenchmark.net/compare/Intel-Core-i7-8750H-vs-Intel-Core-i7-7700HQ/3237vs2906 12407]
|-
|-
| [http://ark.intel.com/products/64601/Intel-Xeon-Processor-E5-1650-12M-Cache-3_20-GHz-0_0-GTs-Intel-QPI Xeon E5-1650 (12 threads)]
| [http://ark.intel.com/products/64601/Intel-Xeon-Processor-E5-1650-12M-Cache-3_20-GHz-0_0-GTs-Intel-QPI Xeon E5-1650 Dell Precision T3600 (6 cores, 12 threads)]
| 23s
| 23s
| 2.5s
| 2.5s
| [http://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E5-1650+%40+3.20GHz&id=1211 11808]
| [http://www.cpubenchmark.net/cpu.php?cpu=Intel+Xeon+E5-1650+%40+3.20GHz&id=1211 11808]
|-
|-
| Intel i3-4590T (4-core) Dell Optiplex 3020M
| Intel i5-4590T (4-core) Dell Optiplex 3020M
|  
|  
|  
|  
| [https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i5-4590T+%40+2.00GHz&id=2276 5622]
| [https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i5-4590T+%40+2.00GHz&id=2276 5622]
|-
| Intel i5 8259U (4-core) NUC8i5BEH 4-core 8-thread
| 20.7s
| 3.2s
|
|-
|-
| AMD Phenom II X6 1055T (6-core)
| AMD Phenom II X6 1055T (6-core)
Line 43: Line 56:
|-
|-
| Intel Core2 Quad Q9500 @2.8GHz (4-core)
| Intel Core2 Quad Q9500 @2.8GHz (4-core)
| 23.8s
| 6.1s
| [https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core2+Quad+Q9500+%40+2.83GHz 3542]
|-
| Intel Pentium J5005 4-core 4-thread
| 16
| 4.3s
|  
|  
|
| [https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core2+Quad+Q9500+%40+2.83GHz 3542]
|-
|-
| Intel Core2 Duo E8400 @3.0GHz (2-core)
| Intel Core2 Duo E8400 @3.0GHz (2-core)
Line 63: Line 81:
|-
|-
| Core(TM) i7-2640M CPU @ 2.80GHz (Lenovo T420s)
| Core(TM) i7-2640M CPU @ 2.80GHz (Lenovo T420s)
| 10s
|  
| 10s
|  
| [https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-2640M+%40+2.80GHz&id=876 3933]
| [https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-2640M+%40+2.80GHz&id=876 3933]
|-
|-
Line 92: Line 110:
|
|
|-
|-
| RPi2 (4-core)
| RPi3B BCM2837 SoC @ 1.2Ghz (4-core)
| 768s
| 382s
| 191s
| 100s
|
|-
| RPi3B+ BCM2837 SoC @ 1.4GHz (4-core)
|  
|  
|
|
|-
|-
Line 112: Line 135:
|
|
|-
|-
| [[Udoo#Benchmark|UDoo X86 Advanced Celeron N3160 2.24 GHZ turbo speed (2-core) ]]
| [[Udoo#Benchmark|UDoo X86 Advanced Celeron N3160 2.24 GHZ turbo speed (2-core, 4 threads) ]]
| 10s
| 52s
| 10s
| 13s
| 1472
| 1472
|-
|-
| [[Odroid#Benchmark|ODroid xu4 (8-core)]]
| [[Odroid#Benchmark|ODroid xu4 (8-core)]]
| 372s
| 372s
| 60s
| 40s
|
|-
| [[Jetson#Benchmark|Jetson nano (4-core)]]
| 21.4s
| 5s
|
|
|}
|}
Line 131: Line 159:
: <syntaxhighlight lang='bash'>
: <syntaxhighlight lang='bash'>
sudo cat /sys/devices/system/cpu/*/cpufreq/cpuinfo_max_freq
sudo cat /sys/devices/system/cpu/*/cpufreq/cpuinfo_max_freq
</syntaxhighlight>
</syntaxhighlight>
</syntaxhighlight>


== Install 0.4.12 from source ==
== Install 0.4.12 from source ==
For some reason, the threads option in version 1.0 does not work. So I still need version 0.4.12.  
For some reason, the threads option in version 1.0 does not work. See [https://github.com/akopytov/sysbench/issues/144 cpu test: single thread and multi-threads get the same result] and [https://github.com/akopytov/sysbench/issues/140 Question about CPU benchmarking].
 
If we need to use version 0.4.12, we need to build from the source.


* https://wiki.mikejung.biz/Sysbench#Sysbench_0.4.12_Source_Install_On_CentOS_6.5_and_CentOS_6.6 to download the source code
* https://wiki.mikejung.biz/Sysbench#Sysbench_0.4.12_Source_Install_On_CentOS_6.5_and_CentOS_6.6 to download the source code
Line 152: Line 181:
           # ../libtool: line 5281: : command not found
           # ../libtool: line 5281: : command not found
sudo make install
sudo make install
</pre>
== Run using Docker ==
Odroid xu4
{{Pre}}
$ docker run -it --rm ubuntu:16.04 bash
# apt update
# apt-get install sysbench
# sysbench --num-threads=8 --test=cpu --cpu-max-prime=20000 run
sysbench 0.4.12:  multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 8
Additional request validation enabled.
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
    total time:                          39.5979s
    total number of events:              10000
    total time taken by event execution: 316.5830
    per-request statistics:
        min:                                23.31ms
        avg:                                31.66ms
        max:                                73.12ms
        approx.  95 percentile:              37.96ms
Threads fairness:
    events (avg/stddev):          1250.0000/201.36
    execution time (avg/stddev):  39.5729/0.01
# sysbench --help
Usage:
  sysbench [general-options]... --test=<test-name> [test-options]... command
General options:
  --num-threads=N            number of threads to use [1]
  --max-requests=N          limit for total number of requests [10000]
  --max-time=N              limit for total execution time in seconds [0]
  --forced-shutdown=STRING  amount of time to wait after --max-time before forcing shutdown [off]
  --thread-stack-size=SIZE  size of stack per thread [32K]
  --init-rng=[on|off]        initialize random number generator [off]
  --test=STRING              test to run
  --debug=[on|off]          print more debugging info [off]
  --validate=[on|off]        perform validation checks where possible [off]
  --help=[on|off]            print help and exit
  --version=[on|off]        print version and exit
Compiled-in tests:
  fileio - File I/O test
  cpu - CPU performance test
  memory - Memory functions speed test
  threads - Threads subsystem performance test
  mutex - Mutex performance test
  oltp - OLTP test
Commands: prepare run cleanup help version
See 'sysbench --test=<name> help' for a list of options for each test.
</pre>
Directly
{{Pre}}
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
$ apt install sysbench # 1.0.11
$ sysbench cpu --threads=8 --cpu-max-prime=20000 --time=0 --events=10000 run
sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 8
Initializing random number generator from current time
Prime numbers limit: 20000
Initializing worker threads...
Threads started!
CPU speed:
    events per second:  221.17
General statistics:
    total time:                          45.2074s
    total number of events:              10000
Latency (ms):
        min:                                25.98
        avg:                                36.14
        max:                                69.89
        95th percentile:                    44.98
        sum:                            361398.71
Threads fairness:
    events (avg/stddev):          1250.0000/246.26
    execution time (avg/stddev):  45.1748/0.01
</pre>
</pre>


== Run sysbench 0.4.12 using singularity ==
== Run sysbench 0.4.12 using singularity ==
# Install singularity (See the 'Docs' under https://sylabs.io/singularity/)
# Install singularity either from pre-build binary or source (See the 'Docs' under https://sylabs.io/singularity/)
# Create a new sub and build a container
# Create a new sub and build a container
# 'Execute' the container
# 'Execute' the container
{{Pre}}
{{Pre}}
# step 1: the following method installed an old version (2.6.1) of singularity
# step 1: the following method installed an old version (2.6.1) of singularity
#       
$ wget -O- http://neuro.debian.net/lists/bionic.us-nh.libre | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list
$ wget -O- http://neuro.debian.net/lists/bionic.us-nh.libre | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list
$ sudo apt-key adv --recv-keys --keyserver hkp://pool.sks-keyservers.net:80 0xA5D32F012649A5A9
$ sudo apt-key adv --recv-keys --keyserver hkp://pool.sks-keyservers.net:80 0xA5D32F012649A5A9
Line 168: Line 305:
# step 2
# step 2
$ mkdir sysbench; cd sysbench
$ mkdir sysbench; cd sysbench
$ nano Singularity
$ nano sysbench.def
$ sudo singularity build sysbench0412 Singularity
$ sudo singularity build sysbench0412 sysbench.def


# step 3
# step 3
Line 177: Line 314:
where the definition file <Singularity> (recall Ubuntu 16.04 still has the old version of sysbench) is
where the definition file <Singularity> (recall Ubuntu 16.04 still has the old version of sysbench) is
<pre>
<pre>
$ cat Singularity
$ cat sysbench.def
Bootstrap: docker
Bootstrap: docker
From: ubuntu:16.04
From: ubuntu:16.04
Line 189: Line 326:
     export PATH=/usr/games:$PATH
     export PATH=/usr/games:$PATH
</pre>
</pre>
Interestingly, the container build using singularity 2.6.1 also works on singularity 3.5.0 (compile from source).


= [http://www.tux.org/~mayer/linux/bmark.html nbench] =
= [http://www.tux.org/~mayer/linux/bmark.html nbench] =
Line 203: Line 341:


Google: how to run geekbench on the raspberry pi
Google: how to run geekbench on the raspberry pi
= CPU stress test =
[https://www.tecmint.com/linux-cpu-load-stress-test-with-stress-ng-tool/ How to Impose High CPU Load and Stress Test on Linux Using ‘Stress-ng’ Tool]
<ul>
<li>'''stress'''
<pre>
sudo apt-get install stress
uptime; sudo stress --cpu  8 --timeout 20; uptime  # 8 cores, 20 seconds
</pre>
</li>
<li>'''stress-ng'''
{{Pre}}
sudo apt-get install stress-ng   
uptime; sudo stress-ng --cpu 8 --timeout 60 --metrics-brief; uptime
uptime; sudo stress-ng --cpu 4 --cpu-method fft --timeout 2m; uptime
uptime; sudo stress-ng --hdd 5 --hdd-ops 100000; uptime
uptime; sudo stress-ng --cpu 4 --io 4 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief; uptime
</pre>
</li>
</ul>
= CPU/GPU overlock =
[https://www.makeuseof.com/ways-to-check-if-cpu-gpu-overclocked/ 3 Ways to Check If Your CPU or GPU Is Overclocked]
= Hardinfo (GUI) =
'''sudo apt install hardinfo''' (this will appear in administration as “System Profiler & Benchmark”). See [https://youtu.be/G-w7ycyd8tA Odroid C4 vs Raspberry Pi 4].


= Simple C program =
= Simple C program =
See [[C#Time_the_iterations_from_0_to_2147483647|Time the iterations from 0 to_2147483647]]
See [[C#Time_the_iterations_from_0_to_2147483647|Time the iterations from 0 to_2147483647]]
= Python vs C =
[https://towardsdatascience.com/how-fast-is-c-compared-to-python-978f18f474c7 How fast is C++ compared to Python?]


= R program =
= R program =
Line 212: Line 378:
= Videos =
= Videos =
[https://youtu.be/kbn_6ixtIpA Raspberry Pi 4B vs Jetson Nano]
[https://youtu.be/kbn_6ixtIpA Raspberry Pi 4B vs Jetson Nano]
On Ubuntu, use one of the following commands to find out the graphics card information.
* sudo lshw -C display
* lspci | grep -i --color 'vga\|3d\|2d'
== webgl ==
http://webglsamples.org/aquarium/aquarium.html
* Macbook Pro A1990 @2.6GHz. 60fps 1000 fish, 44fps 5000 fish, 27fps 10000 fish
* NUC7PJYH Pentium J5005 @2.8GHz. 60fps 1000 fish, 42fps 5000 fish, 26fps 10000 fish
* Jetson nano 2G, 60fps 1000 fish, 26fps 5000 fish, 14fps 10000 fish


= Disk speed test =
= Disk speed test =
* [https://www.shellhacks.com/disk-speed-test-read-write-hdd-ssd-perfomance-linux/ Disk Speed Test (Read/Write): HDD, SSD Performance in Linux]
* [https://www.shellhacks.com/disk-speed-test-read-write-hdd-ssd-perfomance-linux/ Disk Speed Test (Read/Write): HDD, SSD Performance in Linux]
* GUI method: use the 'disks' (gnome-disks) utility in Ubuntu
* GUI method: use the 'disks' (gnome-disks) utility in Ubuntu
* [https://www.tech21century.com/hdd-ssd-drive-speed-test/ 14 Hard Drive Speed Test & Benchmark Tools for SSD/HDD] such as [https://crystalmark.info/en/software/crystaldiskmark/ CrystalDiskMark]
* http://www.cyberciti.biz/faq/freebsd-command-to-find-sata-link-speed/
{{Pre}}
$ dmesg | grep -i SATA
[    0.311173] pci 0000:00:11.0: set SATA to AHCI mode
[    1.510881] ahci 0000:00:11.0: AHCI 0001.0200 32 slots 4 ports 6 Gbps 0xf impl SATA mode
[    1.512669] ata1: SATA max UDMA/133 abar m1024@0xfe02f000 port 0xfe02f100 irq 19
[    1.512672] ata2: SATA max UDMA/133 abar m1024@0xfe02f000 port 0xfe02f180 irq 19
[    1.512675] ata3: SATA max UDMA/133 abar m1024@0xfe02f000 port 0xfe02f200 irq 19
[    1.512677] ata4: SATA max UDMA/133 abar m1024@0xfe02f000 port 0xfe02f280 irq 19
[    1.832349] ata4: SATA link down (SStatus 0 SControl 300)
[    1.832418] ata2: SATA link down (SStatus 0 SControl 300)
[    2.004290] ata3: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    2.004313] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
</pre>
== KDiskMark (GUI) ==
[https://www.linuxuprising.com/2020/10/kdiskmark-is-gui-hdd-ssd-benchmark-tool.html KDiskMark Is A GUI HDD / SSD Benchmark Tool For Linux (Similar To CrystalDiskMark)]


== dd ==
== dd ==
Line 237: Line 431:


== hdparm ==
== hdparm ==
'''hdparm''' is a Linux command line utility that allows to set and view hardware parameters of hard disk drives. '''-t and --direct''' measures data transfer rate but bypassing hard drive's buffer cache memory thus reading directly from the disk.
To test the disk performance, follow [http://www.cyberciti.biz/faq/howto-linux-unix-test-disk-performance-with-dd-command/ cyberciti.biz]. Note that the parameter '''oflag=dsync''' makes a difference. '''-t and --direct''' measures data transfer rate but bypassing hard drive's buffer cache memory thus reading directly from the disk.
 
Here I have a 7200rpm Seagate (ST2000DM001-1CH164) and a 5400rpm WD-blue (WD30EZRZ-00WN9B0)
{{Pre}}
# Hard disk info https://en.wikipedia.org/wiki/Hdparm
sudo hdparm -I /dev/sda
sudo hdparm -I /dev/sdb
 
# Writing speed, where /tmp is a directory from the disk
dd if=/dev/zero of=/tmp/test1.img bs=2G count=1; rm /tmp/test1.img
# 1.4 GB/s from either 5400 or 7200 rpm
 
dd if=/dev/zero of=/tmp/test1.img bs=2G count=1 oflag=dsync; rm /tmp/test1.img
# 115 MB/s from 5400 rpm
# 166 MB/s from 7200 rpm
 
# Latency
dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync; rm /tmp/test2.img
# 27.7 kB/s from 5400 rpm  <==== This is interesting
# 12.5 kB/s from 7200 rpm
 
# Read speed
dd if=/dev/zero of=/tmp/test3.img bs=1G count=1 oflag=direct; rm /tmp/test3.img
# 122 MB/s from 5400 rpm
# 180 MB/s from 7200 rpm
</pre>
Note
* [http://man7.org/linux/man-pages/man1/dd.1.html dd manual]
* oflag=dsync: Use synchronized I/O for data. Do not skip this option. This option get rid of caching and gives you good and accurate results
 
<syntaxhighlight lang='bash'>
<syntaxhighlight lang='bash'>
lsblk  # find the root "/" device
sudo hdparm -t --direct /dev/mmcblk0p1  # eg internal
sudo hdparm -t --direct /dev/mmcblk0p1  # eg internal
sudo hdparm -t --direct /dev/mmcblk0p2  # eg sd card
sudo hdparm -t --direct /dev/mmcblk0p2  # eg sd card
Line 260: Line 485:
On UDOO x86, the SSD is 341.77MB/s. The eMMC speed on UDOO x86 is 130MB/s. A portable HDD has a speed 24-29MB/s.
On UDOO x86, the SSD is 341.77MB/s. The eMMC speed on UDOO x86 is 130MB/s. A portable HDD has a speed 24-29MB/s.


On phenom server, the HDD speed is 150MB/s (WD black WD4003FZEX 4TB, 2013) and 68MB/s (ST ST3640323as 640GB, 2014).
On ODroid x4, the eMMC is 150MB/s.
 
On phenom server, Samsung SSD 860 EVO 500GB is 235 MB/s, the HDD speed is 150MB/s (WD black WD4003FZEX 4TB, 2013) and 68MB/s (ST ST3640323as 640GB, 2014).


On Raspberry Pi 3B ('''sudo apt-get install hdparm'''), the microSD speed is 22MB/s only. The same SSD plugged to a USB2 port has a speed 34MB/s only.
On Raspberry Pi 3B ('''sudo apt-get install hdparm'''), the microSD speed is 22MB/s only. The same SSD plugged to a USB2 port has a speed 34MB/s only.


on Dell t3600 Xeon E5-1650, the HDD (WD Blue 3TB 5400 rpm) speed is 50MB/s and the external USB (WD My Book 4T) is 25MB/s (216.50 kB/s before waking up).
on Dell t3600 Xeon E5-1650, the HDD (WD Blue 3TB 5400 rpm) speed is 50MB/s and the external USB (WD My Book 4T) is 25MB/s (216.50 kB/s before waking up).
[https://youtu.be/G-w7ycyd8tA?t=962 Odroid C4 vs Raspberry Pi 4] Micro SD Card, USB 3.0 SSD, eMMC module.


= Website loading =
= Website loading =
* [https://www.howtoforge.com/how-to-test-website-loading-speed-in-linux/ How to Test Website Loading Speed in Linux]
* [https://www.keycdn.com/blog/website-speed-test-tools Top 15 Free Website Speed Test Tools of 2018]
* [https://www.keycdn.com/blog/website-speed-test-tools Top 15 Free Website Speed Test Tools of 2018]
* https://tools.pingdom.com/
* https://tools.pingdom.com/
* [https://www.tecmint.com/test-website-loading-speed-in-linux-terminal/ How to Test Website Loading Speed in Linux Terminal]. It works for local IP address.
* [https://www.tecmint.com/test-website-loading-speed-in-linux-terminal/ How to Test Website Loading Speed in Linux Terminal]. It works for local IP address. (Another day's test: main server 31 seconds, 192.168.1.86/Odroid: 64 seconds, 192.168.1.88/RPi3: 290 seconds)
{{Pre}}
{{Pre}}
# http
# http
Line 300: Line 530:
                                                                                 total:31515ms
                                                                                 total:31515ms
</pre>
</pre>
== ApacheBench (ab) ==
* https://en.wikipedia.org/wiki/ApacheBench
* https://httpd.apache.org/docs/2.4/programs/ab.html
* https://www.tutorialspoint.com/apache_bench/apache_bench_environment_setup.htm
* https://www.datadoghq.com/blog/apachebench/


= Network speed =
= Network speed =
* 4.5MB/s wifi on raspberry pi 3B+ at home wifi-to-wifi, 7.3MB/s ethernet-to-wifi (tested using scp)
* 4.5MB/s wifi on raspberry pi 3B+ at home wifi-to-wifi, 7.3MB/s ethernet-to-wifi (tested using scp). Note [https://www.androidcentral.com/raspberry-pi-3-model-b-vs-3-b Pi3b+ has gigabit ethernet] network.
** [https://magpi.raspberrypi.org/articles/raspberry-pi-4-vs-raspberry-pi-3b-plus Gigabit Ethernet over USB 2.0 (maximum throughput 300Mbps)] on Raspberry Pi 3B+.
* 5.3MB/s ethernet on UDOO x86 at home wifi-to-ethernet, 62MB/s ethernet-to-ethernet (scp).
* 5.3MB/s ethernet on UDOO x86 at home wifi-to-ethernet, 62MB/s ethernet-to-ethernet (scp).
* 33MB/s when I downloaded Linux iso from [http://mirror.umd.edu/mxlinux-iso/ANTIX/Final/antiX-19/antiX-19.4_x64-full.iso mirror.umd.edu]
== iperf: network speed test between two boxes ==
<ul>
<li>https://iperf.fr/ </li>
<li>[https://tynick.com/blog/07-08-2019/how-to-use-iperf-to-test-network-speed-from-host-to-host/ How To Use iPerf To Test Network Speed From Host To Host]. The default port for iPerf 3 is 5201. iPerf 2 default port is 5001.
<pre>
# Server
iperf3 -s
# Client
iperf3 -c XXX.XXX.X.XX
</pre>
Test on Raspberr Pi 3B+ and ODroid Xu4
<pre>
client not matter, ethernet cable not matter
server: pi3b+ running ubuntu 20.04.1 64-bit
[ ID] Interval          Transfer    Bandwidth      Retr  Cwnd
[  4]  0.00-1.00  sec  39.3 MBytes  329 Mbits/sec    1    239 KBytes     
[  4]  1.00-2.00  sec  38.2 MBytes  320 Mbits/sec    0    270 KBytes
server: pi3b+ running raspberry pi OS lite (buster) 32-bit
SAME result as above. Note Pi 3B+ ethernet is slower than Udoo Quad
server: odroid xu4 ubuntu 20.04.1 64-bit
[ ID] Interval          Transfer    Bandwidth      Retr  Cwnd
[  4]  0.00-1.00  sec  109 MBytes  911 Mbits/sec    0    334 KBytes     
[  4]  1.00-2.00  sec  107 MBytes  900 Mbits/sec    0    334 KBytes
server: Udoo Dual ubuntu 20.04.1/Armbian 20.08 Focal 32-bit
[ ID] Interval          Transfer    Bandwidth      Retr  Cwnd
[  4]  0.00-1.00  sec  63.8 MBytes  535 Mbits/sec    0  1.30 MBytes     
[  4]  1.00-2.00  sec  54.9 MBytes  460 Mbits/sec    0  1.33 MBytes
</pre>
</li>
</ul>
== SSH speed test ==
[https://hackaday.com/2019/12/17/linux-fu-stupid-ssh-tricks/ Linux Fu]
<pre>
yes | pv | ssh user@remote_host "cat >/dev/null"
</pre>

Revision as of 10:22, 27 November 2021

Geekbench

Geekbench is a cross-platform benchmark that measures the performance of your computer's processor and memory.

Sysbench

# Enable 'Universe' first
sudo apt-get update
sudo apt-get install sysbench
sysbench --num-threads=1 --test=cpu --cpu-max-prime=20000 run
# sysbench version is 0.4.12, Ubuntu 16.04, 10000 events 

sysbench cpu --threads=1 --cpu-max-prime=20000 --time=0 --events=10000 run
# sysbench version 1.0.11, Ubuntu 18.04

See Odroid C4 vs Raspberry Pi 4 (ExplainingComputers) for a video demonstration. See Raspberry Pi OS Bullseye Update: New Features & Camera Issues for a comparison of the syntax of version 0.4.12 and 1.0.x.

Two websites have a database for benchmarks.

Device Total time (1-thread) Total time (all threads) Average CPU Mark
Intel i7-11850H @ 2.5GHz (Dell Latitude 5521, 8 cores, 16 threads) 6.42s 1.1s
Intel Core i7-8850H @ 2.6GHz Macbook Pro 2018 (6 cores, 12 threads) brew install sysbench 0.0028s (not reliable on macOS) 0.0008s 12407
Xeon E5-1650 Dell Precision T3600 (6 cores, 12 threads) 23s 2.5s 11808
Intel i5-4590T (4-core) Dell Optiplex 3020M 5622
Intel i5 8259U (4-core) NUC8i5BEH 4-core 8-thread 20.7s 3.2s
AMD Phenom II X6 1055T (6-core) 28s 5.5s 5058
Intel Core2 Quad Q9500 @2.8GHz (4-core) 23.8s 6.1s 3542
Intel Pentium J5005 4-core 4-thread 16 4.3s
Intel Core2 Duo E8400 @3.0GHz (2-core) 21.5s 11.5s 2178
Intel Core i3-4010U @ 1.7GHz (4-core) 47.2s 13.4s 2437
Core(TM) i3-3110M @ 2.40GHz (4-core) 35s 10s 3049
Core(TM) i7-2640M CPU @ 2.80GHz (Lenovo T420s) 3933
Atom(TM) z3735G @ 1.33GHz (hp stream 8 2-core) 918
Atom(TM) z2760 @ 1.8GHz (lenovo lynx 2-core) 576
Atom(TM) N270 @ 1.60GHz (EEE PC 2-core) 192s 120s 272
RPi1 (1-core) 1412s
RPi2 (4-core) 768s 191s
RPi3B BCM2837 SoC @ 1.2Ghz (4-core) 382s 100s
RPi3B+ BCM2837 SoC @ 1.4GHz (4-core)
RPi0-W (1-core) 624s
BeagleBlack (1-core) 673s
UDoo (2-core) 603s 302s
UDoo X86 Advanced Celeron N3160 2.24 GHZ turbo speed (2-core, 4 threads) 52s 13s 1472
ODroid xu4 (8-core) 372s 40s
Jetson nano (4-core) 21.4s 5s

Note that

watch -n1 "cat /proc/cpuinfo | grep \"MHz\""
sudo cat /sys/devices/system/cpu/*/cpufreq/cpuinfo_max_freq

Install 0.4.12 from source

For some reason, the threads option in version 1.0 does not work. See cpu test: single thread and multi-threads get the same result and Question about CPU benchmarking.

If we need to use version 0.4.12, we need to build from the source.

sudo apt install automake autoconf libtool libmysqlclient-dev libssl1.0.0 libssl-dev make

wget http://pkgs.fedoraproject.org/repo/pkgs/sysbench/sysbench-0.4.12.tar.gz/3a6d54fdd3fe002328e4458206392b9d/sysbench-0.4.12.tar.gz
tar zxvf sysbench-0.4.12.tar.gz
cd sysbench-0.4.12/
./autogen.sh
./configure --without-mysql
sudo make # Cannot establish any listening sockets - Make sure an X server isn't already running(EE)
          # ...
          # ../libtool: line 5281: : command not found
sudo make install

Run using Docker

Odroid xu4

$ docker run -it --rm ubuntu:16.04 bash
# apt update
# apt-get install sysbench
# sysbench --num-threads=8 --test=cpu --cpu-max-prime=20000 run

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 8
Additional request validation enabled.


Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000


Test execution summary:
    total time:                          39.5979s
    total number of events:              10000
    total time taken by event execution: 316.5830
    per-request statistics:
         min:                                 23.31ms
         avg:                                 31.66ms
         max:                                 73.12ms
         approx.  95 percentile:              37.96ms

Threads fairness:
    events (avg/stddev):           1250.0000/201.36
    execution time (avg/stddev):   39.5729/0.01

# sysbench --help 
Usage:
  sysbench [general-options]... --test=<test-name> [test-options]... command

General options:
  --num-threads=N            number of threads to use [1]
  --max-requests=N           limit for total number of requests [10000]
  --max-time=N               limit for total execution time in seconds [0]
  --forced-shutdown=STRING   amount of time to wait after --max-time before forcing shutdown [off]
  --thread-stack-size=SIZE   size of stack per thread [32K]
  --init-rng=[on|off]        initialize random number generator [off]
  --test=STRING              test to run
  --debug=[on|off]           print more debugging info [off]
  --validate=[on|off]        perform validation checks where possible [off]
  --help=[on|off]            print help and exit
  --version=[on|off]         print version and exit

Compiled-in tests:
  fileio - File I/O test
  cpu - CPU performance test
  memory - Memory functions speed test
  threads - Threads subsystem performance test
  mutex - Mutex performance test
  oltp - OLTP test

Commands: prepare run cleanup help version

See 'sysbench --test=<name> help' for a list of options for each test.

Directly

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"

$ apt install sysbench # 1.0.11
$ sysbench cpu --threads=8 --cpu-max-prime=20000 --time=0 --events=10000 run
sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 8
Initializing random number generator from current time


Prime numbers limit: 20000

Initializing worker threads...

Threads started!

CPU speed:
    events per second:   221.17

General statistics:
    total time:                          45.2074s
    total number of events:              10000

Latency (ms):
         min:                                 25.98
         avg:                                 36.14
         max:                                 69.89
         95th percentile:                     44.98
         sum:                             361398.71

Threads fairness:
    events (avg/stddev):           1250.0000/246.26
    execution time (avg/stddev):   45.1748/0.01

Run sysbench 0.4.12 using singularity

  1. Install singularity either from pre-build binary or source (See the 'Docs' under https://sylabs.io/singularity/)
  2. Create a new sub and build a container
  3. 'Execute' the container
# step 1: the following method installed an old version (2.6.1) of singularity
#         
$ wget -O- http://neuro.debian.net/lists/bionic.us-nh.libre | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list
$ sudo apt-key adv --recv-keys --keyserver hkp://pool.sks-keyservers.net:80 0xA5D32F012649A5A9
$ sudo apt update
$ sudo apt-get install singularity-container
$ singularity --version

# step 2
$ mkdir sysbench; cd sysbench
$ nano sysbench.def 
$ sudo singularity build sysbench0412 sysbench.def

# step 3
$ singularity exec sysbench0412 sysbench --num-threads=1 --test=cpu --cpu-max-prime=20000 --validate run
$ singularity exec sysbench0412 sysbench --num-threads=4 --test=cpu --cpu-max-prime=20000 --validate run

where the definition file <Singularity> (recall Ubuntu 16.04 still has the old version of sysbench) is

$ cat sysbench.def
Bootstrap: docker
From: ubuntu:16.04

%post
    apt-get -y update
    apt-get -y install sysbench

%environment
    export LC_ALL=C
    export PATH=/usr/games:$PATH

Interestingly, the container build using singularity 2.6.1 also works on singularity 3.5.0 (compile from source).

nbench

wget http://www.tux.org/~mayer/linux/nbench-byte-2.2.3.tar.gz
tar xzvf nbench-byte-2.2.3.tar.gz
cd nbench-byte-2.2.3
make
./nbench

geekbench

https://www.geekbench.com/

Google: how to run geekbench on the raspberry pi

CPU stress test

How to Impose High CPU Load and Stress Test on Linux Using ‘Stress-ng’ Tool

  • stress
    sudo apt-get install stress
    uptime; sudo stress --cpu  8 --timeout 20; uptime   # 8 cores, 20 seconds
    
  • stress-ng
    sudo apt-get install stress-ng    
    uptime; sudo stress-ng --cpu 8 --timeout 60 --metrics-brief; uptime 
    uptime; sudo stress-ng --cpu 4 --cpu-method fft --timeout 2m; uptime
    uptime; sudo stress-ng --hdd 5 --hdd-ops 100000; uptime
    uptime; sudo stress-ng --cpu 4 --io 4 --vm 1 --vm-bytes 1G --timeout 60s --metrics-brief; uptime
    

CPU/GPU overlock

3 Ways to Check If Your CPU or GPU Is Overclocked

Hardinfo (GUI)

sudo apt install hardinfo (this will appear in administration as “System Profiler & Benchmark”). See Odroid C4 vs Raspberry Pi 4.

Simple C program

See Time the iterations from 0 to_2147483647

Python vs C

How fast is C++ compared to Python?

R program

Gross inefficiency in influence.lm, r-source on github

Videos

Raspberry Pi 4B vs Jetson Nano

On Ubuntu, use one of the following commands to find out the graphics card information.

  • sudo lshw -C display
  • lspci | grep -i --color 'vga\|3d\|2d'

webgl

http://webglsamples.org/aquarium/aquarium.html

  • Macbook Pro A1990 @2.6GHz. 60fps 1000 fish, 44fps 5000 fish, 27fps 10000 fish
  • NUC7PJYH Pentium J5005 @2.8GHz. 60fps 1000 fish, 42fps 5000 fish, 26fps 10000 fish
  • Jetson nano 2G, 60fps 1000 fish, 26fps 5000 fish, 14fps 10000 fish

Disk speed test

$ dmesg | grep -i SATA
[    0.311173] pci 0000:00:11.0: set SATA to AHCI mode
[    1.510881] ahci 0000:00:11.0: AHCI 0001.0200 32 slots 4 ports 6 Gbps 0xf impl SATA mode
[    1.512669] ata1: SATA max UDMA/133 abar m1024@0xfe02f000 port 0xfe02f100 irq 19
[    1.512672] ata2: SATA max UDMA/133 abar m1024@0xfe02f000 port 0xfe02f180 irq 19
[    1.512675] ata3: SATA max UDMA/133 abar m1024@0xfe02f000 port 0xfe02f200 irq 19
[    1.512677] ata4: SATA max UDMA/133 abar m1024@0xfe02f000 port 0xfe02f280 irq 19
[    1.832349] ata4: SATA link down (SStatus 0 SControl 300)
[    1.832418] ata2: SATA link down (SStatus 0 SControl 300)
[    2.004290] ata3: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    2.004313] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)

KDiskMark (GUI)

KDiskMark Is A GUI HDD / SSD Benchmark Tool For Linux (Similar To CrystalDiskMark)

dd

Linux and Unix Test Disk I/O Performance With dd Command

  • Test write speed
$ sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync

# External storage
$ sync; dd if=/dev/zero of=/media/user/MyUSB/tempfile bs=1M count=1024; sync
  • Test read speed
$ dd if=tempfile of=/dev/null bs=1M count=1024  # do not use this

# Clear the cache
$ sudo /sbin/sysctl -w vm.drop_caches=3
$ dd if=tempfile of=/dev/null bs=1M count=1024  # consistent with 'disks' utility

hdparm

To test the disk performance, follow cyberciti.biz. Note that the parameter oflag=dsync makes a difference. -t and --direct measures data transfer rate but bypassing hard drive's buffer cache memory thus reading directly from the disk.

Here I have a 7200rpm Seagate (ST2000DM001-1CH164) and a 5400rpm WD-blue (WD30EZRZ-00WN9B0)

# Hard disk info https://en.wikipedia.org/wiki/Hdparm
sudo hdparm -I /dev/sda
sudo hdparm -I /dev/sdb

# Writing speed, where /tmp is a directory from the disk 
dd if=/dev/zero of=/tmp/test1.img bs=2G count=1; rm /tmp/test1.img
# 1.4 GB/s from either 5400 or 7200 rpm

dd if=/dev/zero of=/tmp/test1.img bs=2G count=1 oflag=dsync; rm /tmp/test1.img
# 115 MB/s from 5400 rpm
# 166 MB/s from 7200 rpm

# Latency
dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync; rm /tmp/test2.img
# 27.7 kB/s from 5400 rpm  <==== This is interesting
# 12.5 kB/s from 7200 rpm

# Read speed
dd if=/dev/zero of=/tmp/test3.img bs=1G count=1 oflag=direct; rm /tmp/test3.img
# 122 MB/s from 5400 rpm
# 180 MB/s from 7200 rpm

Note

  • dd manual
  • oflag=dsync: Use synchronized I/O for data. Do not skip this option. This option get rid of caching and gives you good and accurate results
lsblk   # find the root "/" device

sudo hdparm -t --direct /dev/mmcblk0p1  # eg internal
sudo hdparm -t --direct /dev/mmcblk0p2  # eg sd card
sudo hdparm -t --direct /dev/sda1       # eg USB 
sudo hdparm -Tt /dev/sda
sudo hdparm -t /dev/vdb                 # Measure Hard Disk Device Read Speed
sudo hdparm -T /dev/vdb                 # Measure Hard Disk Cache Read Speed
# Reading cache will give more higher performance than reading 
# from disk because only the cached data will be used and tested.

hdparm -I /dev/sda                      # show information about disk

Example: Silicon-power 512GB ssd. The box says it can read up to 560MB/s & write up to 530MB/s. Below is a test result running on NUC Pentium Silver J5005 CPU.

$ sudo hdparm -t --direct /dev/sdb1
[sudo] password for brb: 

/dev/sdb1:
 Timing O_DIRECT disk reads: 1068 MB in  3.01 seconds = 355.34 MB/sec

On UDOO x86, the SSD is 341.77MB/s. The eMMC speed on UDOO x86 is 130MB/s. A portable HDD has a speed 24-29MB/s.

On ODroid x4, the eMMC is 150MB/s.

On phenom server, Samsung SSD 860 EVO 500GB is 235 MB/s, the HDD speed is 150MB/s (WD black WD4003FZEX 4TB, 2013) and 68MB/s (ST ST3640323as 640GB, 2014).

On Raspberry Pi 3B (sudo apt-get install hdparm), the microSD speed is 22MB/s only. The same SSD plugged to a USB2 port has a speed 34MB/s only.

on Dell t3600 Xeon E5-1650, the HDD (WD Blue 3TB 5400 rpm) speed is 50MB/s and the external USB (WD My Book 4T) is 25MB/s (216.50 kB/s before waking up).

Odroid C4 vs Raspberry Pi 4 Micro SD Card, USB 3.0 SSD, eMMC module.

Website loading

# http
$ curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null http://192.168.1.88/wiki/index.php/C

# https
$ curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nAppCon Time:\t\t%{time_appconnect}\nRedirect Time:\t\t%{time_redirect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://taichimd.us/mediawiki/index.php/C

Lookup Time:		0.004311
Connect Time:		0.010050
AppCon Time:		0.049561 (https only)
Redirect Time:		0.000000 (https only)
Pre-transfer Time:	0.049659
Start-transfer Time:	5.035105

Total Time:		5.174981
$ wget -c https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.py
$ python httpstat.py https://taichimd.us/mediawiki/index.php/C
...
  DNS Lookup   TCP Connection   TLS Handshake   Server Processing   Content Transfer
[     4ms    |       8ms      |     34ms      |      31300ms      |       169ms      ]
             |                |               |                   |                  |
    namelookup:4ms            |               |                   |                  |
                        connect:12ms          |                   |                  |
                                    pretransfer:46ms              |                  |
                                                      starttransfer:31346ms          |
                                                                                 total:31515ms

ApacheBench (ab)

Network speed

iperf: network speed test between two boxes

  • https://iperf.fr/
  • How To Use iPerf To Test Network Speed From Host To Host. The default port for iPerf 3 is 5201. iPerf 2 default port is 5001.
    # Server
    iperf3 -s
    
    # Client
    iperf3 -c XXX.XXX.X.XX
    

    Test on Raspberr Pi 3B+ and ODroid Xu4

    client not matter, ethernet cable not matter
    
    server: pi3b+ running ubuntu 20.04.1 64-bit
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec  39.3 MBytes   329 Mbits/sec    1    239 KBytes       
    [  4]   1.00-2.00   sec  38.2 MBytes   320 Mbits/sec    0    270 KBytes
    
    server: pi3b+ running raspberry pi OS lite (buster) 32-bit 
    SAME result as above. Note Pi 3B+ ethernet is slower than Udoo Quad
    
    server: odroid xu4 ubuntu 20.04.1 64-bit
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec   109 MBytes   911 Mbits/sec    0    334 KBytes       
    [  4]   1.00-2.00   sec   107 MBytes   900 Mbits/sec    0    334 KBytes
    
    server: Udoo Dual ubuntu 20.04.1/Armbian 20.08 Focal 32-bit
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-1.00   sec  63.8 MBytes   535 Mbits/sec    0   1.30 MBytes       
    [  4]   1.00-2.00   sec  54.9 MBytes   460 Mbits/sec    0   1.33 MBytes
    

SSH speed test

Linux Fu

yes | pv | ssh user@remote_host "cat >/dev/null"