ubuntuusers.de

Festplatten-Geschwindigkeitstest

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Hinweis:

Dieser Artikel geht in allen Beschreibungen davon aus, dass die Festplatte als /dev/sda im System eingebunden ist. Die Befehle müssen bei davon abweichenden Systemen daher gegebenenfalls angepasst werden.

Wiki/Icons/hd.png Auf dieser Seite werden Möglichkeiten genannt, die Geschwindigkeit von Festplatten zu messen. Insbesondere bei SSD kann durch geeignete Konfiguration die Geschwindigkeit bei Lese- und Schreibvorgängen verbessert werden. Um nachvollziehen zu können, ob eine Optimierung etwas gebracht oder das Gegenteil bewirkt hat, kann es helfen, die Festplatte einem Geschwindigkeitstest („Benchmark“) zu unterziehen.

Achtung!

Eine Ermittlung der Lesegeschwindigkeit nach den in diesem Artikel beschriebenen Methoden ist harmlos, dagegen kann eine Ermittlung der Schreibgeschwindigkeit insbesondere bei SSDs diese nachhaltig beschädigen.

Zur Geschwindigkeitsmessung kann man beispielsweise das GUI-Programm Laufwerksverwaltung oder auf der Kommandozeile das Programm bonnie++ oder wie unten beschrieben die Befehle hdparm bzw. dd verwenden.

Laufwerksverwaltung

Das grafische Werkzeug Laufwerksverwaltung beinhaltet unter anderem auch einen Vergleichstest für Lese- und Schreibgeschwindigkeit. Näheres dazu steht im Abschnitt Laufwerksverwaltung - Vergleichstests.

Hinweis:

Diese Tests sind unabhängig vom (korrekten) Partitions-Alignment der SSD.

⚓︎

Lesegeschwindigkeit

Das Programm hdparm wird zum Lesen und Setzen von Parametern für ATA-Laufwerke genutzt. Es hat aber auch die angenehme Eigenschaft, die Lesegeschwindigkeit von Laufwerken testen zu können. Durch die hier beschriebenen Tests werden Datenbestände auf dem Datenträger nicht beeinträchtigt, d.h. es handelt sich um zerstörungsfreie Tests.

Dazu nutzt man in einem Terminal[1] mit Rootrechten[2] den Befehl hdparm mit den Optionen -T bzw. -t.

Hinweis:

Das Tool hdparm ist unabhängig vom (korrekten) Partitions-Alignment. Wer Tests vor und nach dem Alignment durchführen möchte, kann die Geschwindigkeiten mit dd messen.

Geschwindigkeit des Systems

Dieser Test ermittelt die maximale Lesegeschwindigkeit des Systems (CPU, RAM, Software) ohne Beteiligung des Datenspeichers. Man muss zwar eine Gerätedatei für eine Festplatte oder SSD angeben, das Ergebnis hat aber nichts mit diesem Gerät zu tun.

sudo hdparm -T /dev/sda 

Die Ausgabe sieht dann in etwa so aus:

/dev/sda:
 Timing cached reads:        6286 MB in  2.00 seconds = 3143.78 MB/sec

Aus dem Page Cache liest das System also mit etwa 3140 Megabyte pro Sekunde. Dies ist eine Schranke, welche keine Festplatte und keine SSD an diesem System überschreiten kann.

Der einzelne Wert variiert mit der momentanen Systemlast, daher sollte man die Messung in Ruhe durchführen und mehrmals wiederholen.

Geschwindigkeit des Gerätes

Dieser Test ermittelt die maximale Lesegeschwindigkeit des Systems (CPU, RAM, Software) mit Beteiligung des Datenspeichers.

sudo hdparm -t /dev/sda 

Beispielausgabe:

/dev/sda:
 Timing buffered disk reads:  838 MB in  3.00 seconds =  279.12 MB/sec

"Buffer" ist hier nur ein veralteter Name für Page Cache, über den das System ca. 280 Megabyte pro Sekunde von der Festplatte lesen kann. Auch diese Messung sollte man einige Male wiederholen.

Bei rotierenden Platten (nicht bei SSDs) variiert die Geschwindigkeit mit dem Ort auf der Platte. Die bisherigen Test messen die Geschwindigkeit auf Spur 0 am Außenrand der Scheibe. Man kann mit der zusätzlichen Option --offset auch im Inneren messen, wo in der Regel die Geschwindigkeit geringer als am Außenrand ist. Den Abstand vom Außenrand (hier beispielhaft 250) gibt man in GiB an.

sudo hdparm -t --offset 250 /dev/sda 

Tests ohne Cache

Zusätzlich kann man noch mit der Option --direct („Use O_DIRECT to bypass page cache for timings“) eine Messung der Lesegeschwindigkeit unter Umgehung des Page Caches anfordern.

Hinweis:

Prominente Entwickler raten von der Verwendung der Option O_DIRECT ab. Details dazu lese im Artikel hdparm.

Der in einem Terminal[1] mit Rootrechten[2] ausgeführte Befehl

sudo hdparm -tT --direct /dev/sda 

macht nicht das, was man naiv erwartet und sollte daher besser nicht verendet werden.

Beispielausgabe:

/dev/sda:
 Timing O_DIRECT cached reads:   550 MB in  2.00 seconds = 275.01 MB/sec
 Timing O_DIRECT disk reads:     810 MB in  3.01 seconds = 269.24 MB/sec

Da man nicht weiß und auch nicht einfach ermitteln kann, was O_DIRECT bei diesem Aufruf im vorliegenden System macht, sind die Ergebnisse nicht interpretierbar.

⚓︎

Datei kopieren

Eine andere Methode zur Messung der Lese- oder der Schreibgeschwindigkeit beruht auf dem Kopieren einer Datei bekannter Größe mit Hilfe eines Kopierprogramms (dessen Eigenheiten natürlich die Ergebnisse beeinflussen) und Messung der dafür benötigten Zeit. Man kann dafür im Grunde jedes Kopierprogramm (z.B. cat, cp, rsync) einsetzen, in diesem Artikel wird dd (d.h. "convert and copy a file") verwendet, weil es zusätzlich zwei für Geschwindigkeitsmessungen praktische Features mitbringt:

  1. Es gibt die für den Kopiervorgang benötigte Zeit aus.

  2. Die mit diesem Programm möglichen Konvertierungen ermöglichen eine bequeme Vorgabe der Menge der zu übertragenen Information. Bei den anderen Programmen müsste man dafür Dateien mit bekannten Größen vorbereiten.

Im Gegensatz zu den oben beschriebenen Messung mit hdparm sind die folgenden Verfahren nicht zerstörungsfrei, d.h. man kann nicht auf einfache Weise nach dem Test den vorherigen Zustand wieder herstellen.

Man kann sowohl Tests ohne wie auch mit einem Dateisystem (welches ebenfalls die Ergebnisse beeinflusst) durchführen.

Hinweis:

Im Gegensatz zu hdparm ist dd abhängig von einem korrekten Partitions-Alignment der SSD. Hat man die SSD falsch oder schlecht ausgerichtet, so wirkt sich das auf die Tests aus, welche dann schlechter (also langsamer) ausfallen.

⚓︎

Hinweis:

Bei den folgenden Messmethoden gibt es einen systematischen Fehler, der die Ergebnisse verfälschen kann:

Teile der zu übertragenen Datei befinden sich noch im Page Cache.

Zur Abhilfe kann man vor jedem Messbefehl den Page Cache mit diesen Befehlen leeren:

sudo sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches 

Lesen vom Gerät

Man legt auf dem Datenträger eine Partition (in diesem Artikel sda99 genannt) an. Dafür gibt es viele Möglichkeiten, man kann z.B. gdisk verwenden.

Die Messung der Geschwindigkeit erfolgt dann durch Kopieren der Datei /dev/sda99 ins Nirvana:

sudo dd if=/dev/sda99 of=/dev/null 

Fortgeschrittene Varianten dieses Grundbefehls sind z.B.:

sudo dd if=/dev/sda99 bs=8k of=/dev/null
sudo dd if=/dev/sda99 bs=8k status=progress of=/dev/null 

Eigene Experimente ergeben schnell, dass man mit dd geschickt und weniger geschickt arbeiten kann. Man wähle für den eigenen Bedarf zweckmäßige Parameter.

Die Abhängigkeit der Ergebnisse vom Ort auf der Scheibe kann man durch Wahl des Anfangs der Partition untersuchen, die Abhängigkeit von der Menge der zu kopierenden Daten durch Wahl der Größe der Partition oder Beschneiden beim Kopieren:

sudo dd if=/dev/sda99 bs=8k count=256 of=/dev/null   # ergibt 1MiB 

Schreiben auf das Gerät

Dafür lautet der Grundbefehl:

sudo dd if=/dev/zero of=/dev/sda99 

Diesen Grundbefehl kann man sinngemäß wie vorstehend beschrieben modifizieren.

Schreiben ins Dateisystem

Hierfür muss man in der Partition ein Dateisystem errichten („die Partition formatieren“). Der Typ des Dateisystems (ext4, exFAT, ein anderes Windows-Dateisystem, Btrfs owai.) wähle man gemäß eigenen Bedürfnissen. Dieses Dateisystem muss man einbinden (mount), z.B. nach /mnt/Nur-zum-Test/:

sudo mount -v /dev/sda99 /mnt/Nur-zum-Test/ 

Nach diesen Vorbereitungen testet man die Schreibgeschwindigkeit mit diesem Grundbefehl oder seinen bekannten Varianten:

sudo dd if=/dev/zero of=/mnt/Nur-zum-Test/Speedtest 

Diese fortgeschrittene Variante wird gerne verwendet:

dd if=/dev/zero of=/mnt/Nur-zum-Test/Speedtest bs=1M count=1024 conv=fdatasync,notrunc 

Beispielausgabe:

1024+0 Datensätze ein
1024+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 4,9835 s, 361 MB/s

Der Dateiname ist beliebig innerhalb der vom Dateisystemtyp gesetzten Möglichkeiten. Natürlich muss im Dateisystem genügend Speicherplatz frei sein.

Lesen aus dem Dateisystem

Die gerade angelegte Datei kann man auch zur Ermittlung der Lesegeschwindigkeit verwenden. Dabei ist eine Besonderheit zu beachten:

  • Die gerade geschriebene Datei befindet sich noch im Page Cache und würde gar nicht vom der Festplatte, sondern aus dem Arbeitsspeicher gelesen werden. Man zuerst diesen Zwischenspeicher löschen.

Befehl für den Lesetest:

dd if=/mnt/Nur-zum-Test/Speedtest of=/dev/null bs=1M count=1024 

Beispielausgabe:

1024+0 Datensätze ein
1024+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 0,276268 s, 428 MB/s

Bei einer direkten Wiederholung des Befehls erhält man dagegen eine solche Beispielausgabe mit erheblich höherer Lesegeschwindigkeit:

1024+0 Datensätze ein
1024+0 Datensätze aus
1073741824 Bytes (1,1 GB) kopiert, 0,277148 s, 3,9 GB/s

Man sollte dieses Experiment vier bis fünf Mal durchführen, um ein einigermaßen aussagekräftiges Ergebnis zu erhalten.

Zum Abschluss löscht man die temporär erstellte Datei mit dem Befehl:

sudo rm /mnt/Nur-zum-Test/Speedtest
sudo umount -v /mnt/Nur-zum-Test/ 

Schreibgeschwindigkeit

Zur Messung der Schreibgeschwindigkeit kann man bei rotierenden magnetischen Festplatten die Messung mit dd wie oben beschrieben verwenden:

Bei SSDs sind diese Methoden zwar technisch möglich, aber von ihrer Verwendung wird abgeraten. Sie verbrauchen Speicherblöcke auf der SSD, die nur durch TRIM wieder verwendbar gemacht können, was wiederum die SSD altern lässt. Schreibgeschwindigkeiten bei SSDs sollte man nicht aus Neugier, sondern höchstens in gut begründeten Fällen selbst ermitteln.

  • Intern

    • bonnie++ – Alternatives Benchmarkprogramm

    • SSD – Startseite zum Thema SSD

    • Tuning – Allgemeiner Artikel zum Thema Geschwindigkeitsoptimierung

    • hdparm

    • dd

Diese Revision wurde am 3. November 2024 13:25 von kB erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Hardware, System