Genutzt wurde hierzu ein Proxmox 5. Als Festplatte kam eine Seagate Barracuda ST3500418AS zum Einsatz.
Als Filesystem wurde ext4 genutzt.
Als Benchmark für die größeren Datenmengen wurden 10×1GB in eine Datei geschrieben.
dd if=/dev/zero of=/realdevice/testfile bs=1GB count=10 oflag=direct
Während für die kleinen Dateien 1000 mal 512Byte geschrieben wurden. Die 512Byte entsprechen der Sektorgröße der Festplatte.
dd if=/dev/zero of=/realdevice/testfile bs=512 count=1000 oflag=direct
Nach jedem Durchlauf wurde das Testfile gelöscht. Die Festplatte ist leer und wird von keinem anderen Programm genutzt.
Als KVM Lösung wurde ein Ubuntu 16.04 mit HWE Kernel genommen. LXC ein Ubuntu 16.04.
Leseleistung
Festplatte auf dem Trägersystem
Timing O_DIRECT disk reads: 334 MB in 3.01 seconds = 111.09 MB/sec
Timing O_DIRECT disk reads: 336 MB in 3.00 seconds = 111.95 MB/sec
Timing O_DIRECT disk reads: 306 MB in 3.01 seconds = 101.75 MB/sec
vDisk KVM
Timing O_DIRECT disk reads: 2048 MB in 3.01 seconds = 680.45 MB/sec
Timing O_DIRECT disk reads: 2052 MB in 3.00 seconds = 683.73 MB/sec
Timing O_DIRECT disk reads: 1658 MB in 3.00 seconds = 552.43 MB/sec
Hier scheint der RAM als Cache zu fungieren. Wenn die Daten sich im RAM befinden, müssen die Daten nicht erst von der Festplatte geladen werden, dies führt zu solch hohen Zahlen.
vDisk LXC
hdparm -t --direct /dev/loop1
/dev/loop1: No such file or directory
Da unter Proxmox alle LXC Verzeichnisse als virtuelle Festplatte erstellt werden, wird das Device durch loop eingehangen. Dieses lässt sich anscheinend nicht zu dem Leseperformancetest überreden.
HDD-Passthrough KVM
Timing O_DIRECT disk reads: 336 MB in 3.01 seconds = 111.46 MB/sec
Timing O_DIRECT disk reads: 334 MB in 3.00 seconds = 111.22 MB/sec
Timing O_DIRECT disk reads: 334 MB in 3.01 seconds = 111.07 MB/sec
Passthrough LXC
hdparm -t --direct /dev/sdh
/dev/sdh: No such file or directory
Obwohl mit lsblk
die Platte sdh
erkannt wird, kann man diese nicht direkt ansprechen.
Scheibleistung
Festplatte auf dem Trägersystem:
10240000000 bytes (10 GB, 9.5 GiB) copied, 84.2158 s, 122 MB/s
10000000000 bytes (10 GB, 9.3 GiB) copied, 85.1615 s, 117 MB/s
10000000000 bytes (10 GB, 9.3 GiB) copied, 84.8189 s, 118 MB/s
512000 bytes (512 kB, 500 KiB) copied, 0.349624 s, 1.5 MB/s
512000 bytes (512 kB, 500 KiB) copied, 0.432496 s, 1.2 MB/s
512000 bytes (512 kB, 500 KiB) copied, 0.317205 s, 1.6 MB/s
vDisk KVM
10000000000 bytes (10 GB, 9.3 GiB) copied, 90.3607 s, 111 MB/s
10000000000 bytes (10 GB, 9.3 GiB) copied, 87.8582 s, 114 MB/s
10000000000 bytes (10 GB, 9.3 GiB) copied, 88.7649 s, 113 MB/s
vDisk LXC
10000000000 bytes (10 GB, 9.3 GiB) copied, 90.4302 s, 111 MB/s
10000000000 bytes (10 GB, 9.3 GiB) copied, 90.3377 s, 111 MB/s
10000000000 bytes (10 GB, 9.3 GiB) copied, 84.0791 s, 119 MB/s
512000 bytes (512 kB, 500 KiB) copied, 0.0316678 s, 16.2 MB/s
512000 bytes (512 kB, 500 KiB) copied, 0.0371901 s, 13.8 MB/s
512000 bytes (512 kB, 500 KiB) copied, 0.0335505 s, 15.3 MB/s
Hier scheint der RAM wieder einen Cache zu bilden, da die Datenübertragung deutlich über dem möglichen der Platte liegt.
HDD-Passthrough KVM
10000000000 bytes (10 GB, 9.3 GiB) copied, 88.0321 s, 114 MB/s
10000000000 bytes (10 GB, 9.3 GiB) copied, 80.6613 s, 124 MB/s
10000000000 bytes (10 GB, 9.3 GiB) copied, 81.1716 s, 123 MB/s
512000 bytes (512 kB, 500 KiB) copied, 0.855658 s, 598 kB/s
512000 bytes (512 kB, 500 KiB) copied, 0.757553 s, 676 kB/s
512000 bytes (512 kB, 500 KiB) copied, 0.790519 s, 648 kB/s
Passthrough LXC
10000000000 bytes (10 GB, 9.3 GiB) copied, 81.7809 s, 122 MB/s
10000000000 bytes (10 GB, 9.3 GiB) copied, 81.3739 s, 123 MB/s
10000000000 bytes (10 GB, 9.3 GiB) copied, 82.2163 s, 122 MB/s
512000 bytes (512 kB, 500 KiB) copied, 0.304083 s, 1.7 MB/s
512000 bytes (512 kB, 500 KiB) copied, 0.304618 s, 1.7 MB/s
512000 bytes (512 kB, 500 KiB) copied, 0.312286 s, 1.6 MB/s