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/

harddisk performance of real and virtual machines, is of course, important for overall performance of the system.

of course – a system is only as fast – as the slowest part “on the team”.

so a super fast SSD bundled with a super slow single core celeron, won’t increase performance significantly.

ntfs vs ext4

ntfs is (currently 2021-09 under Debian 10) 3x times slower than ext4!

testing on giada f302:

===== benchmark sequential and small files KINGSTON SKC600512G ext4 vs ntfs =====
===== system used =====
Debian 10.9

uname -a
Linux IdealLinux2021 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux

=== show info on cpu ===
cat /proc/cpuinfo |head
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 78
model name	: Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
stepping	: 3
microcode	: 0xd6
cpu MHz		: 754.355
cache size	: 3072 KB
physical id	: 0

=== show info on harddisk ===
	Model Number:       KINGSTON SKC600512G                     
	Firmware Revision:  S4200102
	Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0

===== mounted EXT4 =====
========== writing 3GB of zeroes ==========
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 5.8087 s, 370 MB/s

real	0m5.815s
user	0m0.000s
sys	0m2.517s
========== reading 6GB of zeroes ==========
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 4.26741 s, 503 MB/s

real	0m4.276s
user	0m0.000s
sys	0m1.624s
========== tidy up remove testfile ==========

===== small files python based harddisk + cpu benchmark =====
time /scripts/bench/bench_harddisk_small_files.py 

create test folder:
0.0119922161102

create files:
9.25402116776

rewrite files:
2.01614999771

read linear:
1.82262396812

read random:
3.44922590256

delete all files:
4.54426288605

real	0m27.000s <- 3.2x FASTER than with NTFS 3g!
user	0m3.287s
sys	0m14.839s


===== mounted NTFS =====
/sbin/mount.ntfs --version
ntfs-3g 2017.3.23AR.3 integrated FUSE 28

========== writing 3GB of zeroes ==========
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 14.6907 s, 146 MB/s

real	0m14.698s
user	0m0.000s
sys	0m2.901s
========== reading 6GB of zeroes ==========
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 0.818364 s, 2.6 GB/s <- ok? (RAM caching)

real	0m0.823s
user	0m0.000s
sys	0m0.629s
========== tidy up remove testfile ==========

time /scripts/bench/bench_harddisk_small_files.py 

create test folder:
0.380342006683

create files:
44.9138729572

rewrite files:
7.5974009037

read linear:
6.24533390999

read random:
8.19712495804

delete all files:
rm: cannot remove 'test': Directory not empty <- also does not happen under ext4
14.9125750065

real	1m27.667s <- 3.2x (+70%) SLOWER than with ext4! also a lot of cpu usage!
user	0m5.385s
sys	0m19.761s

samsung ssd pro 850 on giada f302:

===== giada f302 bench samsung ssd 850 pro =====
time /scripts/bench/bench_harddisk.sh 
=== starting harddisk sequential write and read bench v1 ===
no need to run it as root
because dd is a very dangerous utility
modify paths /media/user/to/mountpoint/ manually
then run the script
=== show info on harddisk ===
	Model Number:       Samsung SSD 850 PRO 256GB               
	Firmware Revision:  EXM04B6Q
	Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
========== writing 3GB of zeroes ==========
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 5.53786 s, 388 MB/s

real	0m5.543s
user	0m0.000s
sys	0m2.417s
========== reading 6GB of zeroes ==========
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 4.31814 s, 497 MB/s

real	0m4.327s
user	0m0.000s
sys	0m1.621s
========== tidy up remove testfile ==========

real	0m10.008s
user	0m0.005s
sys	0m4.172s


===== python bench with small files =====
time /scripts/bench/bench_harddisk_small_files.py 
 
create test folder:
0.0197870731354

create files:
9.34433507919

rewrite files:
2.0522480011

read linear:
1.93751502037

read random:
3.44131994247

delete all files:
4.48000884056

real	0m27.600s <- wow! only 2% SLOWER than the more recent Kingston :)

user	0m3.124s
sys	0m14.886s

testing on giada f300:

hostnamectl 
   Static hostname: giada
         Icon name: computer-desktop
           Chassis: desktop
  Operating System: Debian GNU/Linux 10 (buster)
            Kernel: Linux 4.19.0-11-amd64
      Architecture: x86-64

su - root
lshw -class tape -class disk -class storage
========== what harddisk / controllers are used ==========
  *-sata
       description: SATA controller
       product: 8 Series SATA Controller 1 [AHCI mode]
       vendor: Intel Corporation
       physical id: 1f.2
       bus info: pci@0000:00:1f.2
       logical name: scsi0
       version: 04
       width: 32 bits
       clock: 66MHz
       capabilities: sata msi pm ahci_1.0 bus_master cap_list emulated
       configuration: driver=ahci latency=0
       resources: irq:45 ioport:f0b0(size=8) ioport:f0a0(size=4) ioport:f090(size=8) ioport:f080(size=4) ioport:f060(size=32) memory:f7e1a000-f7e1a7ff

benchmark script used:

can be run as non-root user:

#!/bin/bash
echo "=== starting harddisk sequential write and read bench v1 ==="
echo "no need to be run as root"
echo "========== writing 3GB of zeroes =========="
time dd if=/dev/zero of=./mountpoint/testfile bs=3G count=1 oflag=direct

echo "========== reading 6GB of zeroes =========="
time dd if=./mountpoint/testfile bs=3GB count=1 of=/dev/null

echo "========== tidy up remove testfile =========="
rm -rf ./mountpoint/testfile;

results:

harddisk1: toshiba 2.5 usb 3.0 connected, filesystem: ext4

about the harddisk:

hdparm -I /dev/sdb|grep Model -A3
ATA device, with non-removable media
	Model Number:       TOSHIBA MQ01ABD050                      
	Firmware Revision:  AX001U  
	Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6

benchmark result:

========== writing 3GB of zeroes to /media/user/mountpoint/testfile ==========
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 25.6249 s, 83.8 MB/s

real	0m27.466s
user	0m0.008s
sys	0m3.089s
========== reading 6GB of zeroes from /media/user/mountpoint/testfile ==========
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 22.8702 s, 93.9 MB/s

real	0m22.880s
user	0m0.000s
sys	0m1.923s

harddisk2: Samsung SSD 860 EVO 500GB, filesystem: ext4

about the harddisk:

hdparm -I /dev/sda|grep Model -A3

ATA device, with non-removable media
	Model Number:       Samsung SSD 860 EVO 500GB                  
	Firmware Revision:  RVT03B6Q
	Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0

benchmark result:

=== starting harddisk sequential write and read bench v1 ===
no need to run it as root
because dd is a very dangerous utility
modify paths /media/user/to/mountpoint/ manually
then run the script

========== writing 3GB of zeroes ==========
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 5.46448 s, 393 MB/s

real	0m5.474s
user	0m0.001s
sys	0m2.407s
========== reading 6GB of zeroes ==========
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 4.87677 s, 440 MB/s

real	0m4.886s
user	0m0.000s
sys	0m1.260s
========== tidy up remove testfile ==========

# testing conditions might not be exactly fair
# as this ssd was also booted from
# only really fair testing conditions are booting from separate drive or usb
time /scripts/bench/bench_harddisk_small_files.py 

create test folder:
0.00678896903992

create files:
10.6135139465

rewrite files:
2.76307606697

read linear:
3.14085292816

read random:
4.85474491119

delete all files:
5.91292095184

real	0m32.690s <- 17.40% slower than the KINGSTON SKC600512G
user	0m3.614s
sys	0m18.186s

comment:

the USB 3.0 connected Toshiba ext harddisk (2.5) performs pretty well reaching 93.9 MB/s

of course it can not compete with an SATA internal connected Samsung SSD 860 reaching around 393 MB/s during write and 440 MB/s during read.

how fast are virtual harddisks?

boot up time for the virtual Win 10 64 guest was 40 sec (from power on to desktop), not pretty but okay. (too long imho)

so one knows, that the theoretical speed of a virtual harddisk, should not be greater than that of the real harddisk.

but: there is a lot of RAM caching going on, so the virtual harddisk speeds even exceed the real harddisk speeds.

CrystalDisk Harddisk Benchmark - Win 10 64 Bit as VirtualBox guest on Debian 10 64Bit host (samsung ssd) - i-o host caching active

CrystalDisk Harddisk Benchmark – Win 10 64 Bit as VirtualBox guest on Debian 10 64Bit host (samsung ssd) – i-o host caching active (!)

during read, almost all read access was RAM cached (not much activity on the harddisk LED)

during write, significant harddisk activity was seen.

also notable: Win 10 VirtualBox guest produces (imho too much) CPU usage, when idle

Win 10 VirtualBox guest produces (imho too much) CPU usage, when idle

Win 10 VirtualBox guest produces (imho too much) CPU usage, when idle

the cause of this is unkown (is it MINING BITCOINS in the background that then get transferred to Micro$oft? :-p)

this could cause an issue when having many Win 10 vms running in parallel, because it could result in an overall slowdown of the host system

admin