Das Schreiben großer Dateien auf meine primäre SSD scheint langsam zu sein und ich versuche, den Grund dafür zu finden. Das Mainboard ist ein ASUS Maximus VIII Hero und ich habe zwei SSDs angeschlossen:
- Samsung SSD 840 EVO 120GB --> sda
- Samsung SSD 840 EVO 500 GB --> sdb
Hier ist die Ausgabe von fdisk -l
Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A3DB9022-5AE0-4BF4-BCA0-E0DAF7BB2106
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 167569407 166518784 79.4G Linux filesystem
/dev/sda3 167569408 234440703 66871296 31.9G Linux swap
Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Die 120 GB sind also meine Systemfestplatte und die 500 GB sind eine sekundäre Festplatte. Wenn ich mit dd auf die SSDs schreibe, erhalte ich folgende Ergebnisse:
sda:
~$ dd if=/dev/zero of=/tmp/dd_performance bs=1G count=1 oflag=direct
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.1183 s, 507 MB/s
~$ dd if=/dev/zero of=/tmp/dd_performance bs=1G count=10 oflag=direct
10737418240 bytes (11 GB, 10 GiB) copied, 296.29 s, 36.2 MB/s
SDB:
~$ dd if=/dev/zero of=/mnt/temp_data/dd_performance bs=1G count=1 oflag=direct
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.13052 s, 504 MB/s
~$ dd if=/dev/zero of=/mnt/temp_data/dd_performance bs=1G count=10 oflag=direct
10737418240 bytes (11 GB, 10 GiB) copied, 21.1424 s, 508 MB/s
Bei einer 1 GB großen Datei erhalte ich also sehr ähnliche Ergebnisse. Aber das Schreiben einer 10 GB großen Datei in sda wird quälend langsam.
ich fandähnliche Fragendachte aber, dass oflag=direct alle Caches überspringen und direkt schreiben sollte. Während der Ausführung hatte ich 25 GB freien Speicher.
Die einzige Erklärung, die mir eingefallen ist, ist, dass sda viel mehr Dateien hat (Systemfestplatte) und die SSD wahrscheinlich mehr Arbeit leisten muss, um eine 10 GB große Datei darauf unterzubringen als auf sdb. Ist dieses Verhalten normal? Gibt es einen besseren Test, den ich durchführen könnte?
Antwort1
Dank Daniel Bs Kommentar bin ich sicher, dass das Verhalten normal ist.
Lösung
Die beiden Festplatten haben sehr unterschiedliche TurboWrites und beim Schreiben großer Dateien ist ein Abfall zu erwarten. Bei der kleineren Festplatte tritt der Abfall einfach früher ein und ist viel größer. Außerdem ist die von mir verwendete Blockgröße (1 GB) für Tests nicht optimal. Die Verwendung einer vernünftigeren Größe von 1 MB führt zu besseren Ergebnissen.
Abschluss
Ich werde die kleinere Festplatte weiterhin für meine Systempartitionen verwenden, da sie viele kleine Dateien enthalten und diese schnell arbeiten. Aber ich werde zwei VMs, die ich auch auf dieser SSD betreibe, auf die größere verschieben, da ich häufig Backups mache und diese kopiere.