Fio ist die Abkürzung für Flexible IO, ein vielseitiger IO-Workload-Generator. Im Jahr 2005 war Jens Axboe, das Rückgrat und Autor des IO-Stacks im Linux-Kernel, es leid, ständig einmalige Testprogramme zu schreiben, um Änderungen am Linux-IO-Subsystem zu vergleichen oder zu überprüfen. Aus diesem Grund wurde fio geboren, um die Arbeit viel einfacher zu machen. Es war flexibel genug, um detaillierte Workload-Einrichtungen zu ermöglichen, und es enthielt die notwendigen Berichte, um die Daten nach Abschluss zu verstehen. Jens arbeitete weiter an FIO, als er zu Oracle und später zu Fusion-io kam.
Fio ist die Abkürzung für Flexible IO, ein vielseitiger IO-Workload-Generator. Im Jahr 2005 war Jens Axboe, das Rückgrat und Autor des IO-Stacks im Linux-Kernel, es leid, ständig einmalige Testprogramme zu schreiben, um Änderungen am Linux-IO-Subsystem zu vergleichen oder zu überprüfen. Aus diesem Grund wurde fio geboren, um die Arbeit viel einfacher zu machen. Es war flexibel genug, um detaillierte Workload-Einrichtungen zu ermöglichen, und es enthielt die notwendigen Berichte, um die Daten nach Abschluss zu verstehen. Jens arbeitete weiter an FIO, als er zu Oracle und später zu Fusion-io kam. Heutzutage ist die Fio-Benutzergemeinschaft aktiv und engagiert sich in der Entwicklung und entwickelt Fio daher kontinuierlich weiter und implementiert neue Funktionen. Mehr als 100 Menschen haben zu fio beigetragen, und viele haben dies mehrmals getan. Dank dieser Verpflichtung wird ungefähr alle 4 bis 6 Wochen eine neue Version von fio veröffentlicht und fio wird häufig als Industriestandard-Benchmark, Stresstest-Tool und für IO-Verifizierungszwecke verwendet.
Hauptfunktionen und Funktionen
Die beiden Hauptmerkmale eines guten Benchmarks sind die Möglichkeit, die gewünschte Arbeitslast auszuführen und die gewünschten Ausgabeeinheiten zu erhalten. Flexibilität war (und bleibt) das Hauptaugenmerk von fio. Es unterstützt Workload-Optionen, die in anderen Benchmarks nicht zu finden sind, sowie äußerst detaillierte E/A-Statistiken. Jede Art von zufälliger und sequenzieller E/A-Mischung oder Lese-/Schreibmischung ist einfach zu definieren. Auch das interne Design von fio ist flexibel. Das Definieren einer Arbeitslast ist völlig unabhängig von der IO-Engine (ein Begriff, den fio verwendet, um anzugeben, wie IO an den Kernel geliefert wird). Wenn Sie beispielsweise einen Workload mit nativer Asynchronisierung unter Linux ausführen und dann denselben Workload unter Windows vergleichen möchten, ändern Sie einfach die einzelne IO-Engine-Zeile in die native Version unter Windows. Oder wenn Sie detailliertere Latenzperzentilstatistiken am Ende der Verteilung wünschen, ist das auch einfach. Geben Sie einfach die genauen Perzentile an, an denen Sie interessiert sind, und fio verfolgt dies für Sie.
Obwohl ursprünglich unter Linux entwickelt, funktionieren die Bereiche in fio, die nicht an betriebssystemspezifische Funktionen gebunden sind, auf jeder Plattform von Windows über HP-UX bis hin zu Android. Es gibt auch native E/A-Engines unter Linux, Windows, Solaris usw. Dies ist eine Schlüsselfunktion für gemischte Umgebungen, in denen Sie (nahezu) identische Workloads in unterschiedlichen Betriebsumgebungen ausführen möchten. Darüber hinaus wird fio normalerweise direkt auf dem Zielcomputer ausgeführt, unterstützt jedoch auch Netzwerkverbindungen. Sie können ein Server-Backend auf den Zielcomputern ausführen und das Datenerfassungs-Frontend auf einem Clientcomputer ausführen. Dies erleichtert die Verwaltung, insbesondere wenn FIO häufig auf mehreren Computern verwendet wird.
Fio ist überwiegend eine textbasierte CLI-Anwendung, obwohl es zunächst Unterstützung für ein plattformübergreifendes GTK-basiertes GUI-Frontend (gfio) gibt. Zum Zeitpunkt dieser Veröffentlichung ist gfio in der neuesten fio-Version, v2.1, enthalten und sollte ziemlich stabil sein. Es kann als GUI-Frontend für jede Arbeitslast dienen, die der CLI-Client unterstützt. Es bietet außerdem grundlegende Unterstützung für GUI-Bearbeitungsauftragsoptionen und Workloads, die vollständige Unterstützung befindet sich jedoch noch in der Entwicklung, da gfio noch in Arbeit ist.
Fio unterstützt außerdem drei verschiedene Arten von Ausgabeformaten. Die „klassische“ Ausgabe ist die Standardausgabe, bei der am Ende der Arbeitslast Arbeitslaststatistiken ausgegeben werden. Es gibt auch Unterstützung für ein CSV-Format, diese nimmt jedoch langsam zugunsten eines JSON-basierten Ausgabeformats ab. Letzteres ist weitaus flexibler und hat den Vorteil, dass es für Menschen und Computer einfach zu analysieren ist.
Fio hat sich dank der Synergie seiner lebendigen Benutzer- und Entwickler-Community schnell weiterentwickelt. Es ist einfacher auszuführen als konkurrierende Projekte, flexibel genug, um die Aufgaben der Benutzer zu erfüllen, und der Overhead ist gering genug, um jede Art von Speichersystem mit voller Geschwindigkeit zu betreiben. Zusammen mit den umfangreicheren Optionen und Berichten als alles andere auf dem Markt ist Fio ein hervorragendes Tool.
Warum StorageReview.com FIO verwendet
Da wir damit begonnen haben, sowohl die Menge als auch die Tiefe unserer Unternehmensspeicherüberprüfungen zu erhöhen, benötigten wir ein besseres Benchmarking-Tool, um die Leistung verschiedener Speicherprodukte über mehrere Betriebssysteme hinweg genau zu messen. Herkömmliche Workload-Generator-Software wie Iometer oder Vdbench bieten eine begrenzte Kompatibilität mit ihrem nicht-nativen Betriebssystem oder sie hatten Schwierigkeiten, Lasten für Hochleistungsspeichergeräte wie PCIe-Anwendungsbeschleuniger oder leistungsstarke Netzwerkspeicher zu skalieren. Seit Beginn unserer Implementierung von FIO hat es viele dieser Probleme gelöst und ist sogar noch einen Schritt weiter gegangen, indem es die Skripterstellung für längere Testzeiträume unterstützt. Diese Gesamtfunktionalität macht es zu unserem bevorzugten synthetischen Benchmark für alle Unternehmensbewertungen.
Für unsere Tests verwenden wir FIO, um die Leistung eines Speichergeräts über einen bestimmten Zeitraum zu messen. Bei den meisten Produkten umfasst dies eine sechsstündige Vorkonditionierung, bevor wir mit unseren Haupttests beginnen. Bei größeren PCIe-Speichergeräten, die möglicherweise erst nach vielen Teststunden in den stabilen Zustand gelangen, führen wir eine doppelt so lange Vorbereitung durch, nämlich 6 Stunden, bevor unsere Haupttests beginnen. Unser synthetischer Enterprise-Storage-Benchmark-Prozess beginnt mit einer Analyse der Leistung des Laufwerks während einer gründlichen Vorkonditionierungsphase. Jedes der vergleichbaren Produkte wird zunächst mit den Tools des Anbieters sicher gelöscht und dann mit der gleichen Arbeitslast, mit der das Gerät getestet wird, unter einer hohen Last von 12 Threads mit einer ausstehenden Warteschlange von 16 pro Thread in den stabilen Zustand vorkonditioniert. Um den Prozess abzurunden, testen wir dann in festgelegten Intervallen mehrere Thread-/Warteschlangentiefenprofile, um die Leistung bei leichter und starker Nutzung zu zeigen.
Vorkonditionierung und primäre stationäre Tests:
- Durchsatz (Lese- und Schreib-IOPS-Aggregat)
- Durchschnittliche Latenz (Lese- und Schreiblatenz insgesamt gemittelt)
- Maximale Latenz (Spitzen-Lese- oder Schreiblatenz)
- Latenz-Standardabweichung (Lese- und Schreib-Standardabweichung insgesamt gemittelt)
Unsere Enterprise Synthetic Workload Analysis umfasst verschiedene Profile, um einige reale Aufgaben abzubilden. Diese Profile wurden entwickelt, um den Vergleich mit unseren früheren Benchmarks sowie weit verbreiteten Werten wie maximaler Lese- und Schreibgeschwindigkeit von 4K und 8K 70/30, die häufig für Unternehmenshardware verwendet wird, zu erleichtern.
- 4k
- 100 % Lesen oder 100 % Schreiben
- 100 % 4
- fio –filename=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=4k –rwmixread=100 –io Depth=16 –numjobs=16 –runtime=60 –group_reporting –name=4ktest
- 8k 70/30
- 70 % lesen, 30 % schreiben
- 100 % 8
- fio –filename=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=8k –rwmixread=70 –io Depth=16 –numjobs=16 –runtime=60 –group_reporting –name=8k7030test
Derzeit verwenden wir FIO-Version 2.0.7 (x64) in CentOS 6.3 für unsere Linux-Leistungstests und FIO-Version 2.0.12.2 (x64) in Windows Server 2008 R2 SP1 für unsere Windows-Leistung.
StorageReview Enterprise-Testplattformen
Speicherlösungen werden mit dem synthetischen FIO-Benchmark getestet StorageReview Enterprise Test Lab Verwendung eigenständiger Server. Wir verwenden den HP ProLiant DL380/DL360 Gen9, um eine realistische Leistung zu zeigen, indem wir lediglich den Speicheradapter oder die Netzwerkschnittstelle ändern, um unseren DL380/DL360 mit verschiedenen Speicherprodukten zu verbinden. Der DL380/DL360 bietet nachweislich eine hervorragende Kompatibilität mit Geräten von Drittanbietern und ist damit eine hervorragende Plattform für diese vielfältige Testumgebung.
(Gen1) Lenovo ThinkServer RD240
- 2 x Intel Xeon X5650 (2.66 GHz, 12 MB Cache)
- Intel 5500+ ICH10R Chipsatz
- Speicher – 8 GB (2 x 4 GB) 1333 MHz DDR3 registrierte RDIMMs
- Windows Server 2008 Standard Edition R2 SP1 64-Bit und CentOS 6.2 64-Bit
- LSI 9211 SAS/SATA 6.0 Gbit/s HBA
(Gen2) Lenovo ThinkServer RD630
- 2 x Intel Xeon E5-2620 (2.0 GHz, 15 MB Cache, 6 Kerne)
- Intel C602 Chipsatz
- Speicher – 16 GB (2 x 8 GB) 1333 MHz DDR3 registrierte RDIMMs
- Windows Server 2008 R2 SP1 64-Bit, Windows Server 2012 Standard, CentOS 6.3 64-Bit
- 100GB Micron RealSSD P400e SSD booten
- LSI 9207-8i SAS/SATA 6.0 Gbit/s HBA (zum Benchmarking von SSDs oder HDDs)
(Gen3) HP ProLiant DL380/DL360 Gen9
- Zwei Intel E5-2667 v3-CPUs (3.2 GHz, 8 Kerne, 20 MB Cache)
- 256 GB RAM (16 GB x 16 DDR4, 128 GB pro CPU)
- Windows Server 2012 R2, CentOS 7.0
- 400 GB Boot-SSD – Windows
- 300 GB Boot-Festplatte – Linux
- LSI 9300-8e SAS/SATA 12.0 Gbit/s HBA (Zum Benchmarking von SSDs oder HDDs)
- Supermicro SuperChassis 846BE1C-R1K28B SAS3 JBOD (Zum Anschließen von SSDs oder HDDs)