Benchmark des neuen Speichersystems

, LVM, LUKS, RAID, Linux

Wie bereits zuvor angekündigt folgt nun ein ausführliches Benchmark meines neuen RAID1, LUKS, und LVM gestützten Speichersystems. Dabei zeige ich ermittelte Werte zu sequenziellen und zufälligen Zugriffen auf die Festplatten im Gegensatz zur SSD-Systemplatte.

Sequenzielle Zugriffe

Im ersten Schritt habe ich den Systemdurchsatz / Plattendurchsatz mithilfe von hdparm ermittelt. Wie sich unschwer erkennen lässt, sind die „Timing cached reads“ ohne Zugriff auf die eigentlichen Datenträger von statten gegangen. Diese Werte spiegeln die Leistungsfähigkeit des Systems wieder. Diese Messung „Timing buffered disk reads“ ist ein Indiz dafür, wie schnell das Laufwerk sequentielle Daten, ohne jeglichen Dateisystem Overhead, liest.

# Lesegeschwindigkeitstest auf SSD
hdparm -tT /dev/sda

#> /dev/sda:
#>  Timing cached reads:   29528 MB in  2.00 seconds = 14780.64 MB/sec
#>  Timing buffered disk reads: 1288 MB in  3.00 seconds = 428.79 MB/sec

# Lesegeschwindigkeitstest auf HDD#1
hdparm -tT /dev/sdb

#> /dev/sdb:
#>  Timing cached reads:   28986 MB in  2.00 seconds = 14509.56 MB/sec
#>  Timing buffered disk reads: 410 MB in  3.01 seconds = 136.19 MB/sec

# Lesegeschwindigkeitstest auf HDD#2
hdparm -tT /dev/sdc

#> /dev/sdc:
#>  Timing cached reads:   29886 MB in  2.00 seconds = 14959.78 MB/sec
#>  Timing buffered disk reads: 536 MB in  3.01 seconds = 178.23 MB/sec

Im nächsten Schritt messen wir mit dem Werkzeug dd die Schreibgeschwindigkeit für eine neue, große Datei auf den entsprechenden Laufwerken. Dabei ist festzuhalten, dass alle drei Speichergeräte über große Caches verfügen und per SATA3 angebunden sind.

# Neue große Datei anlegen auf SSD
sync; rm testing; sync; time ( dd if=/dev/zero of=testing bs=16k count=10000; sync )

#> 163840000 Bytes (164 MB) kopiert, 0,0662822 s, 2,5 GB/s
#> real    0m0.501s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,071625 s, 2,3 GB/s
#> real    0m0.526s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0689608 s, 2,4 GB/s
#> real    0m0.489s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0714855 s, 2,3 GB/s
#> real    0m0.500s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0687406 s, 2,4 GB/s
#> real    0m0.525s

# Neue große Datei anlegen auf LUKS/LVM Partition
sync; rm testing; sync; time ( dd if=/dev/zero of=testing bs=16k count=10000; sync )

#> 163840000 Bytes (164 MB) kopiert, 0,069773 s, 2,3 GB/s
#> real    0m1.287s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0692304 s, 2,4 GB/s
#> real    0m1.389s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0746935 s, 2,2 GB/s
#> real    0m1.331s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0718778 s, 2,3 GB/s
#> real    0m1.282s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0676178 s, 2,4 GB/s
#> real    0m1.415s

Selbigen Test wollen wir nun für das Überschreiben dieser großen Datei durchführen. Dabei ist zu beachten, dass wir im ersten Durchlauf die Datei erstmals anlegen und in den weiteren Iterationen immer wieder überschreiben. An diesem Punkt lässt sich schon eher eine Aussage über die unterschiedliche Leistungsfähigkeit der Laufwerke treffen.

# Datei überschreiben auf SSD Root Partition
dd if=/dev/zero of=output.img bs=8k count=256k

#> 2147483648 Bytes (2,1 GB) kopiert, 1,39487 s, 1,5 GB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 6,10294 s, 352 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 6,46983 s, 332 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 6,33827 s, 339 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 6,31469 s, 340 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 6,28691 s, 342 MB/s
#> ---------
#> Avg (ohne den ersten, cached Write): 341 MB/s

# Datei überschreiben auf LUKS/LVM Partition
dd if=/dev/zero of=output.img bs=8k count=256k

#> 2147483648 Bytes (2,1 GB) kopiert, 1,60615 s, 1,3 GB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 12,2853 s, 175 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 12,648 s, 170 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 8,85098 s, 243 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 15,7225 s, 137 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 12,7022 s, 169 MB/s
#> ---------
#> Avg (ohne den ersten, cached Write): 178,8 MB/s

Zufällige Zugriffe

Selbstverständlich sind die sequenziellen Zugriffe weniger im Alltag anzutreffen, dafür aber eher die zufälligen. Aus diesem Grund legen wir im nächsten Schritt 1000 kleine Dateien auf den Laufwerken an, um eine Alltagssituation zu simulieren. Des Weiteren ermittelte ich die Werte für einen Commit-Size von jeweils einer Datei, und jeweils allen Dateien auf einmal. Der Commit-Size ist die Anzahl der Befehle an die physischen Geräte. Ein Commit-Size von eins bedeutet somit, dass nachdem eine Datei angelegt wurde, der jeweilige Befehl sofort abgefeuert und solange darauf gewartet wird bis dieser abgearbeitet wurde.

# 1000 kleine neue Dateien anlegen auf SSD, Commit-Size: 1 File
sync; rm -rf testing*; sync; time ( for item in `seq 1 1000`; do dd if=/dev/zero of=testing.$item bs=16k count=10; sync; done; )

#> 157M Insgesamt / 160K pro Datei
#> real    0m31.491s
#>
#> Avg: 4,98 MB/s

# 1000 kleine neue Dateien anlegen auf SSD, Commit-Size: Alle Files
sync; rm -rf testing*; sync; time ( for item in `seq 1 1000`; do dd if=/dev/zero of=testing.$item bs=16k count=10; done; sync; )

#> 157M Insgesamt / 160K pro Datei
#> real    0m4.173s
#>
#> Avg: 37,62 MB/s

# 1000 kleine neue Dateien anlegen auf LUKS/LVM Partition, Commit-Size: 1 File
sync; rm -rf testing*; sync; time ( for item in `seq 1 1000`; do dd if=/dev/zero of=testing.$item bs=16k count=10; sync; done; )

#> 157M Insgesamt / 160K pro Datei
#> real    1m30.222s
#>
#> Avg: 1,74 MB/s

# 1000 kleine neue Dateien anlegen auf LUKS/LVM Partition, Commit-Size: Alle Files
sync; rm -rf testing*; sync; time ( for item in `seq 1 1000`; do dd if=/dev/zero of=testing.$item bs=16k count=10; done; sync; )

#> 157M Insgesamt / 160K pro Datei
#> real    0m5.180s
#>
#> Avg: 30,30 MB/s

Übertragen meiner Daten von den alten Platten zum neuen Setup

Jeden Datentransfer vom alten zum neuen System habe ich mit rsync durchgeführt, da es zum einen sehr komfortabel ist und zum anderen detaillierte Informationen zum Transfer nach Abschluss des Prozesses bereithält. Diese Informationen halfen mir, noch aussagekräftigere Werte für die Gesamtsystembewertung zu finden.

Dokumente         sent  152982774     bytes  received  2432     bytes  33996712.44  bytes/sec
Musik             sent  35397843919   bytes  received  193622   bytes  51042591.98  bytes/sec
Bilder            sent  4345719686    bytes  received  66225    bytes  47494927.99  bytes/sec
Projekte          sent  13075821042   bytes  received  3844489  bytes  20581692.42  bytes/sec
                  sent  15407912775   bytes  received  419696   bytes  30006489.72  bytes/sec
Software/Linux    sent  34223276167   bytes  received  528066   bytes  52611536.10  bytes/sec
Software/Windows  sent  23038547810   bytes  received  40556    bytes  67860348.65  bytes/sec
Filme             sent  3421078079    bytes  received  348      bytes  61641052.74  bytes/sec
                  sent  110931117562  bytes  received  6282     bytes  62514017.38  bytes/sec
                  sent  3099578522    bytes  received  1349     bytes  53905736.89  bytes/sec
                  sent  58225295334   bytes  received  4848     bytes  58547310.39  bytes/sec
                  sent  106386526122  bytes  received  5757     bytes  59450422.96  bytes/sec
Arbeitsdaten      sent  40517714800   bytes  received  982795   bytes  37992215.28  bytes/sec
                  sent  10115108418   bytes  received  77309    bytes  38979521.11  bytes/sec

-----------------------

Durschnittliche Geschwindigkeit: 48330326.860714285 bytes/sec = 46.091391430 MB/s
              Übertragene Größe: 426.86 GB

Dieses Szenario stellte einen sehr ausgewogenen Mix an großen und kleinen Dateien dar, mit einer ansehnlichen Größe von insgesamt 426 GB. Dabei fällt ein etwas magerer Durchsatz ins Auge, der sich aber dadurch erklären lässt, dass alle Daten verschlüsselt werden mussten und von mehreren SATA2 Laufwerken gelesen wurden. Mein letzter Test war eine Video-Datei innerhalb des verschlüsselten Verbundes zu kopieren, was durchaus oft zum tragen kommt in meinem Alltag.

# Kopie von LUKS/LVM Partition zu LUKS/LVM Partition
time cp rh-688x288-xvidac3.avi /mnt/work/Temp/x/

#> size    1742.83 MB
#> real    0m20.403s
#>
#> Avg: 85.42 MB/s

Abschluss

Alles in allem nutze ich dieses System nun schon ein paar Tage, und bin nach wie vor nicht negativ überrascht worden von der Leistungsfähigkeit. Ich hoffe das die gezeigten Werte für den interessierten Leser verständlich waren, und auch einfach reproduzierbar sind. In diesem Sinne denke ich dieser Blog-Post war kurz und gut. Aber natürlich lese ich gern Feedback aller Art als Kommentar. 😃


Vorheriger ArtikelNächster Artikel