Messen von I/O Performance

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

In diesem Artikel beschreiben wir Grundlagen zum Thema Messen von I/O Performance. Dieses Thema ist sehr komplex und umfangreich, wir versuchen die wichtigsten Grund-Informationen ohne Anspruch auf absolute Vollständigkeit hier zu behandeln.

Grundlagen

Allgemeine Grundlagen

Achten Sie auf vollständig nachvollziehbare Tests. Dazu ist es notwendig, dass Sie die gesamte Testumgebung möglichst genau dokumentieren.

Hardware-seitig zählen hier zum Beispiel:

  • Mainboard inkl. BIOS-Version
  • CPUs
  • Arbeitsspeicher
  • (falls verwendet) RAID-Controller inkl. Firmware-Version
  • Speichermedien (Festplatten, SSDs, ...) inkl. Firmware-Versionen
  • ...

Software-seitig:

  • BIOS-Konfiguration (am besten Load Defaults und anschließend etwaige Konfigurationsänderungen dokumentieren)
  • Betriebssystem mit genauen Infos zur Installation, Software-Versionen, etc.
  • (falls verwendet) genaue Konfiguration des RAID-Controllers (RAID-Level, Cache-Konfiguration, ...)
  • Testtools mit genauer Versionsangabe
  • ...

Messen von SSDs und Flashspeicher

  • Gleicher Ausgangszustand: Die Schreibperformance von SSDs und Flashspeicher kann sich mit dem Füllstand ändern (siehe Solid State Drive - Schreibzugriffe. Eine fast vollgeschriebene SSD hat zumeist eine geringere Schreibperformance als eine leere SSD, die mittels Secure Erase zuvor vollständig gelöscht wurde. Achten Sie bei Performance-Messungen daher darauf, dass Sie die SSDs entweder mit Secure Erase zuvor vollständig löschen oder nachvollziehbar zuerst mit einer bestimmten Datenmenge beschreiben.
  • Gleiche Cache-Einstellungen: Achten Sie beim Vergleich von mehreren SSDs auf möglichst gleiche Cache-Einstellungen (siehe Solid State Drive - DRAM Puffer (Cache)).
  • Mit Random-Daten testen: Manche SSD-Controller haben eine Datenkompression integriert. Ein Testen mit NULL-Daten kann dabei zu sehr hohen Messwerten führen, die mit echten Daten aber nicht erreicht werden. Testen Sie daher am besten mit zufälligen Testdaten (siehe Solid State Drive - Datenkompression).

Messen von Festplatten

  • Gleiche Bereiche von Festplatten vergleichen: Bei konstanter Rotationsgeschwindigkeit ist der Datendurchsatz am äußeren Rand der Plattenscheiben höher als am inneren Rand. Da Festplatten von außen nach innen beschrieben werden, ist der Durchsatz am Beginn des Datenbereichs somit höher als am Ende des Datenbereichs der Festplatte. Beim Vergleich von mehreren Festplatten achten Sie daher darauf, jeweils die gleichen Bereiche der Platten zu vergleichen. Am einfachsten testen Sie Festplatten direkt am Beginn des Datenbereichs. Wenn Sie eher das Ende des Datenbereichs (also die inneren Spuren von Festplatten) testen möchten, beginnen Sie über Offset-Parameter der Performance-Tools z.B. jeweils bei 90% der Kapazität der jeweiligen Festplatte.
    Beispiel: Western Digital WD5002ABYS-01B1B0
    Beginn des Datenbereichs:
    • 111 MByte/s (getestet mit fio --filename=/dev/sdd --direct=1 --rw=read --bs=1m --size=5G --offset=0G --name=file1)
    • 116 MByte/s (getestet mit dd if=/dev/sdd of=/dev/null bs=1M count=5120 iflag=direct)
    Ende des Datenbereichts:
    • 62,8 MByte/s (getestet mit fio --filename=/dev/sdd --direct=1 --rw=read --bs=1m --size=5G --offset=460G --name=file1)
    • 65,8 MByte/s (getestet mit dd if=/dev/sdd of=/dev/null bs=1M count=5120 skip=471040 iflag=direct)
Anmerkung: Wenn Sie eine hohe Datentransferrate und I/O Performance benötigen, kann es daher durchaus sinnvoll sein von einer größeren Festplatte nur den vorderen Bereich zu nutzen. Wenn Sie etwa 250 GByte benötigen können Sie eine 1 TB Festplatte verwenden, aber davon nur die ersten 250 GByte nutzen. Das erhöht die durschschnittliche Datentransferrate und auch die Anzahl an möglicher IOPS (= niedrigere Zugriffszeit), da der Festplattenarm sich nicht mehr so weit nach innen bewegen muss.[1]
  • Gleiche Festplatten Schreibcache-Einstellungen: Wenn Sie mehrere Festplatten miteinander vergleichen achten Sie auf idente Schreibcache-Einstellungen.
  • Keine laufenden SMART-Tests: Festplatten können Selbsttests durchführen. Diese Tests können Sie z.B. mit smartctl -t TEST starten. Solche Selbsttests beeinflussen die Performance von parellel laufenden I/O-Performance-Messungen. Achten Sie daher darauf, dass keine Festplatten-Selbsttests laufen wenn Sie die I/O Performance messen wollen.
  • Keine laufenden Hintergrund-Operationen wie Pre-Scan von Seagate: Neuere SAS-Festplatten von Seagate führen beim erstmaligen Beschreiben eines Sektors automatisch einen anschließenden Media-Scan durch. Damit sollen Mediendefekte frühzeitig erkannt werden. Die Schreibperformance sinkt dabei aber um circa 50%. Beschreiben Sie solche Festplatten daher vor dem Testen bzw. dem Produktiveinsatz einmal vollständig (z.B. mit dd). Damit ist der Pre-Scan vollständig abgeschlossen und hat somit keine weiteren negativen Performance-Auswirkungen. Anmerkung: parallel führen diese Festplatten im IDLE-Betrieb auch einen Background Media Scan durch.[2][3]

Messen mit RAID Controllern

Wenn Sie Messungen von Festplatten oder SSDs im RAID-Verbund durchführen, beachten Sie neben den vorhergehenden Hinweisen auch die folgenden Anmerkungen:

  • Keine laufenden Hintergrundprozesse: Am RAID-Controller dürfen bei Performance Messungen keine Hintergrundprozesse laufen. RAID-Initialisierungen, RAID-Verifies, etc. müssen daher zuvor vollständig abgeschlossen sein.

Testfälle

Durchsatz

Mit Durchsatz Tests (Throughput) misst man in der Regel mögliche Durchsatzraten bei sequenzielle Zugriffen (streaming I/O oder sequential I/O genannt).

Dabei sind interessant:

  • Lese-Durchsatz in MByte/sec
  • Schreib-Dursatz in MByte/sec

Beispiele für Durchsatz-Tests finden Sie hier: fio - Testfälle.

IOPS

Mit IOPS Tests (Input/Outputs per Second) misst man die Anzahl der möglichen Ein/Ausgabe-Operationen pro Sekunde. In der Regel misst man dabei die worst-case Szenarien (Random Read IOPS und Random Write IOPS). Das sind zufällig verteilte Zugriffe (random I/O), wobei jeder Zugriff nur wenig Daten überträgt.

IOPS können Sie direkt in die mittlere Zugriffszeit einer Festplatte umrechnen. Die mittlere Zugriffszeit in Sekunden ist einfach der Kehrwert der IOPS. 71 IOPS entsprechen damit etwa 0,01408 Sekunden = 14,08 ms mittlere Zugriffszeit.

Die mittlere Zugriffszeit von Festplatten setzt sich zusammen aus (siehe auch Folie 9 des Vortrags 'Storagetechnologien im Vergleich'):

  • seek time (Spurwechselzeit)
  • latency (Latenz - Dauer einer halben Umdrehung der Festplatte)
  • controller overhead (Kommando-Latenz, kann meist vernachlässigt werden)
  • transfer time (Transferzeit, kann bei den worst-case-Tests vernachlässigt werden, da sie gegenüber der seek time und latency sehr gering ist)

Beispiele für IOPS-Tests finden Sie hier: fio - Testfälle.

Weitere Informationen zu IOPS (I/Os per Second) finden Sie u.a. hier:

Einzelnachweise

  1. http://www.zdnet.com/blog/ou/how-higher-rpm-hard-drives-rip-you-off/322
  2. Product Manual Constellation ES Series SAS Kapitel 8.4 Background Media Scan und Kapitel 8.5 Media Pre-Scan
  3. Platten-Karussell (c't 15/2010, Seite 142)

Weitere Informationen


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.


Das könnte Sie auch interessieren

Linux I/O Performance Messungen mit iotop
Linux I/O Performance Tests mit dd
Linux Performance Auswertung mit collectd