Festplattengeschwindigkeit mit hdparm vermessen
Die weniger bekannte Option »--offset« ermöglicht es, die Geschwindigkeit der Festplatte an verschiedenen Stellen zu bestimmen.
Dass das Programm hdparm eine Vielzahl von Optionen zur Konfiguration von Festplatten und auch Möglichkeiten zur Geschwindigkeitsmessung besitzt, dürfte bekannt sein. So misst man die Geschwindigkeit der ersten Festplatte im System üblicherweise mit dem Kommando
hdparm -tT /dev/sda
und wiederholt es mehrfach. Dabei führt die Option -T
eine Messung des Cache-Durchsatzes durch, der hauptsächlich von der Speicher- und der Prozessorgeschwindigkeit abhängt. Die Option -t
dagegen misst das Lesen von der Festplatte über die systemeigenen Puffer. Es wird empfohlen, beide Optionen zusammen zu verwenden, um stabilere Ergebnisse zu erhalten. Das Ergebnis kann etwa so aussehen:
/dev/sda: Timing cached reads: 1808 MB in 2.00 seconds = 903.99 MB/sec Timing buffered disk reads: 416 MB in 3.01 seconds = 138.28 MB/sec
Das Problem mit traditionellen Festplatten ist, dass die vom Hersteller und den Händlern beworbene Geschwindigkeit nur am Anfang der Platte, am äußeren Rand also, erreicht wird. Der Grund ist, dass dort in eine Spur mehr Sektoren passen als in der Mitte oder am inneren Rand der Platte - die Umdrehungszeit ist dagegen für alle Spuren gleich.
Mit der nicht so bekannten Option --offset
kann man hdparm allerdings anweisen, an anderen Stellen zu messen, und zwar in Schritten von einem Gigabyte. Dazu gibt man hinter --offset
den Startwert in Gigabyte an:
hdparm -tT --offset 0 /dev/sda hdparm -tT --offset 1500 /dev/sda hdparm -tT --offset 2700 /dev/sda
Der höchstmögliche Offset-Wert liegt immer ein Stück unter den Kapazitätsangaben des Herstellers. Der Grund ist, dass die Hersteller aus Marketinggründen mit Faktor 1000 statt 1024 in den Größenangaben rechnen, weil so größere Werte herauskommen. hdparm verwendet den Faktor 1024 durchgehend. Das Resultat ist:
/dev/sda: Timing cached reads: 1806 MB in 2.00 seconds = 902.77 MB/sec Timing buffered disk reads (offset 0 GB): 420 MB in 3.01 seconds = 139.57 MB/sec /dev/sda: Timing cached reads: 1758 MB in 2.00 seconds = 879.02 MB/sec Timing buffered disk reads (offset 1500 GB): 342 MB in 3.00 seconds = 113.99 MB/sec /dev/sda: Timing cached reads: 1768 MB in 2.00 seconds = 883.84 MB/sec Timing buffered disk reads (offset 2700 GB): 220 MB in 3.02 seconds = 72.78 MB/sec
Das Ergebnis überrascht nicht: In der Mitte ist die Platte bereits um die 25 Prozent langsamer als außen, ganz innen erreicht sie noch 50-60 Prozent der beworbenen Geschwindigkeit. Im Schnitt kann man mit etwa 75 Prozent der angegebenen Geschwindigkeit rechnen.
Bei einer SSD tritt der Effekt natürlich nicht auf. Dort erhält man erwartungsgemäß an allen Positionen im Rahmen der Messgenauigkeit denselben Wert.
Die Möglichkeit, durch zahlreiche Messungen ein Geschwindigkeitsprofil der Festplatte zu erstellen, sei dem Leser überlassen. Man müsste per Skript hdparm mit allen möglichen Offset-Werten aufrufen und die Ergebnisse extrahieren. Die Daten könnte man gleich noch in ein Plot-Programm wie GnuPlot einspeisen. Aber vielleicht gibt es bereits Programme, die eine solche Analyse vornehmen und grafisch aufbereiten.