TKperf Testabläufe

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

TKperf setzt bei den Abläufen der SSD-Tests auf eine Spezifikation der SNIA-Organisation. Mit Hilfe von Fio werden die einzelnen Tests realisiert und die Ergebnisse durch Python-Skripts für den Report aufbereitet. Für die Durchführung der HDD-Tests wird diese Spezifikation so adaptiert, dass sich die Tests für traditionelle Festplatten eignen. Die Spezifikation ist frei verfügbar und kann als Referenz für eine Analyse der Testergebnisse herangezogen werden.

SNIA Solid State Storage Performance Test Specification

Die Solid State Storage (SSS) Performance Test Specification (PTS) der Organisation SNIA[1] beschreibt detailliert wie Tests von SSDs im Enterprise Bereich durchgeführt werden können. Die Spezifikation beinhaltet Empfehlungen für die korrekte Pre-Konditionierung der Devices, oder auch die Erkennung des Zeitpunkts, zu dem die SSD ihren stabilen Zustand erreicht hat.

Die Spezifikation beschreibt folgende Arten von Tests:

  1. IOPS Test
  2. Write Saturation Test (ein Sättigungs-Test zur Prüfung der Schreib-Performance über einen längeren Zeitraum)
  3. Throughput Test (Durchsatz-Test)
  4. Latency Test (Latenz-Test)

In jeder Test-Beschreibung werden Themen wie Secure Erase, Block-Größen, Mixed Workloads und Auswertung der Testergebnisse behandelt. Dabei wird auch festgelegt welche Informationen, Graphen und Tabellen ein Ergebnis-Report enthalten muss. Eine Einführung in die Spezifikation bietet auch die Präsentation The Why and How of SSD Performance Benchmarking (pdf-Datei, snia.org).

Alle Tests von TKperf sind entsprechend der Solid State Storage (SSS) Performance Test Specification (PTS) umgesetzt. Die SSS PTS kann daher als Referenz für die Interpretation der Ergebnisse oder auch als Informationsquelle für das Verständnis der Tests verwendet werden.

Definitionen

Folgende Begriffe kommen im Zuge der Durchführung eines Tests vor:

Begriff Bedeutung
Stable State Jener Zustand, in dem die letzten gemessenen Werte annähernd gleich geblieben sind und nicht zu sehr voneinander abweichen. Die Parameter für die Messung des Stable States sind zum einen die Steigung der Geraden, die den nächsten Wert vorhersagt als auch die Differenz zwischen dem größten und kleinsten gemessenen Wert. Die Spezifikation schreibt als Messfenster die Werte der letzten 5 Runden vor, diese Fenster dient, falls die Werte stabil sind, als Measurement Window.
Dependence Variable Die Dependence Variable wird für die Prüfung benötigt, ob der Stable State erreicht wurde. Diese Variable wird von der Spezifikation vorgegeben und setzt sich aus einer Workload- und Block-Größen-Kombination zusammen. Zum Beispiel ist die Dependence Variable für den IOPS-Test: random write - 4k Block Size. Es werden für die Detektion des stabilen Zustands nur jene Messungen des Tests mit 4KB Block-Größe beim zufälligen Schreiben hergenommen. Für die weiteren Test-Arten ist die Dependence Variable unterschiedlich und kann der Spezifikation oder dem Test-Report entnommen werden.
Measurement Window Jener Bereich, in dem gemessene Werte für Measuremtent Plots und Overview Tabellen hergenommen werden. Die Werte für die Graphen und Übersichts-Tabellen entsprechen dem Mittelwert der Werte, die im Stable-State-Fenster gemessen wurden. Werte außerhalb dieses Fensters dienen lediglich zur Darstellung der Annäherung der Werte an den stabilen Zustand (Convergence Plots).
Workload Ein Workload kann aus puren Lese- oder Schreib-Operationen bestehen, oder sich aus gemischten Operationen (Mixed Workloads) zusammensetzen. Für Mixed Workloads wird der prozentuale Anteil von lesen zu schreiben angegeben: R/W 100/0 = 100% lesen - 0% schreiben, 95/5 = 95% lesen - 5% schreiben usw. bis zu 0/100 = 0% lesen - 100% schreiben.
Block-Größen Die Block-Größe (BS) bezeichnet jene Größe, die für einen Block der Daten-Operation eingesetzt wird (s.a. Fio Grundlagen).
Measurement Plot Zeigt den Durchschnitt der gemessenen Werte im Measuremtent Window für alle Block-Größen und alle Workloads.
Steady State Convergence Plot Der Convergence Plot zeigt im Gegensatz zum Measurement Plot nicht nur die Werte des Measurement Windows, sondern die Werte aller durchgeführten Runden. Zur besseren Übersichtlichkeit werden nicht alle Block-Größen und Workloads im Graphen dargestellt, sondern die für den stabilen Zustand relevante. Dieser Graph soll zeigen, wie sich die Messungen dem stabilen Zustand angenähert haben.
Steady State Verification Plot Der Verification Plot dient als Beleg dafür, dass das Device einen stabilen Zustand erreicht hat. Das Diagramm zeigt die gemessenen Werte im Measurement Window, die Steigung der geraden die den nächsten Messpunkt vorraussagt und jenen Bereich, den die Differenz des größten und kleinsten gemessenen Werts nicht überschreiten dürfen.
Workload Independent Preconditioning Das vom Workload unabhängige Prekonditionieren dient zur Eliminierung von Einflüssen der vorangegangenen Tests. Im Falle der SNIA-Spezifikation bedeutet dies 2x überschreiben des gesamten Devices mit 128KB Block-Größe und sequentiellen Zugriffen.

SSD Performance Tests

IOPS-Test

Ein IOPS-Test wird zumeist als Kenngrößen-Test für SSDs eingesetzt. Dieser Test beschreibt, wie viele IO-Operationen pro Sekunde von einem Device abgearbeitet werden können. Nähere Informationen dazu wurden auch im Artikel Messen von I/O Performance verfasst. Im Kontext des Performance-Tools beschreibt der folgende Pseudo-Code den IOPS-Test:

Make Secure Erase
Workload Ind. Preconditioning
While not Steady State
    For workloads [100, 95, 65, 50, 35, 5, 0]
        For block sizes ['1024k', '128k', '64k', '32k', '16k', '8k', '4k', '512']
            Random Workload for 1 Minute
  • Im Detail bedeuten die einzelnen Schritte:
    1. Ein Secure Erase garantiert, dass die Flash-Zellen der SSD gelöscht werden.
    2. Wie bereits erwähnt wird zur Prekonditionierung das Device 2x sequentiell überschrieben.
    3. Solange der Steady State nicht erreicht wurde, werden in jeder Runde für mehrere Mixed Workloads und Block Größen Tests gestartet. Dabei kommen immer zufällige Zugriffe (random I/O) zum Einsatz, um die IOPS zu messen.
  • Dependent Variable: Für die Messung, ob der stabile Zustand erreicht wurde, werden die Werte von Zufälligem Schreiben mit 4KB Block-Größe (4k block size, random write) verwendet.

Write Saturation Test

Der Sättigungstest zeigt, wie sich ein Device beim kontinuierlichen Beschreiben mit zufälligen Zugriffen verhält. In Bezug auf die abgesetzte Datenmenge auf das Device wird darauf geachtet, dass die geschriebene Datenmenge ein vielfaches der Device-Größe ist.

  • Pseudo Code
Make Secure Erase
While not written 4x User Capacity or runtime < 24h
    Carry out random write, 4k block size for 1 minute
  • Details
    1. Ein Secure Erase löscht wiederum das gesamte Device.
    2. Einzelne Test-Runden von 1 Minute Länge werden solange ausgeführt, bis die Anzahl an geschriebenen Bytes die 4-fache Device Größe übersteigt, oder die Laufzeit 24h überschreitet.
    3. In jeder Runde schreibe mit zufälligen Zugriffen von 4KB Block-Größe (4k block size, random write) 1 Minute lang auf das Device. Dabei wird protokolliert, wie viele Bytes in dieser Minute (Runde) auf das Device abgesetzt wurden. Die Anzahl an Bytes der Runden wird aufsummiert und das Ende des Tests ist erreicht wenn diese Anzahl die vierfache Größe des Devices übersteigt. Die zweite Abbruchbedingung legt fest, das auch nach 24 Stunden Laufzeit der Test beendet wird.

Throughput Test

Der Durchsatz-Test misst die Größe der Datenmenge, die von einem Device aufgenommen werden kann. Im Gegensatz zu den IOPS kommt es hierbei nicht auf eine möglichst große Anzahl an IO-Operationen an, sondern wie viele Daten pro IO verarbeitet werden können.

  • Pseudo Code
For block sizes ['1024k', '64k', '8k', '4k', '512']
    Make Secure Erase
    While not Steady State
        Sequential read for 1 Minute
        Sequential write for 1 Minute
  • Details
    1. Vor jedem Test mit einer bestimmten Block-Größe wird ein Secure Erase durchgeführt.
    2. Solange der stabile Zustand nicht erreicht wurde, werden sequentielle Lese- und dann sequentielle Schreib-Operationen für 1 Minute durchgeführt.
  • Dependent Variable: Zur Prüfung des stabilen Zustands dient die Block-Größe 1024KB beim Schreiben (1024k block size, sequential write)

Latency Test

Der Latenz-Test zeigt, in welcher Zeit einzelne IO-Operationen vom Device abgehandelt werden.

  • Pseudo Code
Make Secure Erase
Workload Ind. Preconditioning
While not Steady State
    For workloads [100, 65, 0]
        For block sizes ['8k', '4k', '512']
            Random Workload for 1 Minute
  • Details
    1. Ein Secure Erase löscht das Device zu Beginn.
    2. Wie beim IOPS-Test wird mit den selben Parametern prekonditioniert.
    3. Solange der stabile Zustand nicht erreicht wurde, werden für 100% lesen, 65% lesen - 35% schreiben und 100% schreiben, 1 minütige Tests für die drei Block-Größen ausgeführt.
  • Dependent Variable: Zufälliges Schreiben mit 4KB Block-Größe (4k block size, random write)

HDD Performance Tests

Performance-Tests von Festplatten gestalten sich insofern einfacher, da die Problematiken Prekonditionierung und Messung eines stabilen Zustands weg fallen. Jedoch kommt hinzu, dass die Performance einer Festplatte von außen nach innen hin abnimmt (s.a. Messen von I/O Performance). Dieser Umstand muss bei einem Performance-Test bedacht werden und soll sich auch in den Graphen der Mess-Ergebnisse widerspiegeln.

Für die Performance-Tests der Festplatten wird deshalb das zu testende Device in 128 gleich große Teile aufgeteilt und jeder Teil einem Test unterzogen.

IOPS Test

Der IOPS-Test zeigt, wie viele IO-Operationen pro Sekunde vom Device verarbeitet werden können.

  • Pseudo Code
Divide device in 128 parts
For range(128)
    For workloads [100, 50, 0]
        For block sizes ['64k', '16k', '4k']
            Random Workload for 1 Minute
  • Details
    1. Das Device wird in 128 gleich große Teile unterteilt. Der Parameter '--offset' von Fio ermöglicht es, für jeden Teil der Festplatten einen Fio Job auszuführen.
    2. Für 100% lesen, 50% lesen - 50% schreiben und 100% schreiben, werden 1 minütige Tests für die drei Block-Größen ausgeführt.

Throughput Test

Der Durchsatz-Test misst die Größe der Datenmenge, die von einem Device aufgenommen werden kann.

  • Pseudo Code
For block sizes ['1024k', '4k']
    For range(128)
        Sequential read
        Sequential write
  • Details
    1. Das Device wird wiederum in 128 gleich große Teile unterteilt.
    2. Für die Block-Größen 1024KB und 4KB werden sequentielle Lese- und dan Schreib-Zugriffe über den kompletten Teil durchgeführt (keine Zeit-Limitierung).

Einzelnachweise


Foto Georg Schönberger.jpg

Autor: Georg Schönberger

Georg Schönberger, Abteilung DevOps bei der XORTEX eBusiness GmbH, absolvierte an der FH OÖ am Campus Hagenberg sein Studium zum Bachelor Computer- und Mediensicherheit, Studium Master Sichere Informationssysteme. Seit 2015 ist Georg bei XORTEX beschäftigt und arbeitet sehr lösungsorientiert und hat keine Angst vor schwierigen Aufgaben. Zu seinen Hobbys zählt neben Linux auch Tennis, Klettern und Reisen.


Das könnte Sie auch interessieren

SSD Performance mit TKperf vergleichen
TKperf
TKperf Installation