Fio is een afkorting van Flexible IO, een veelzijdige IO-workloadgenerator. In 2005 was Jens Axboe, de ruggengraat achter en auteur van de IO-stack in de Linux-kernel, het beu om voortdurend eenmalige testprogramma's te schrijven om wijzigingen in het Linux IO-subsysteem te benchmarken of te verifiëren. Als gevolg hiervan werd fio geboren om het werk een stuk gemakkelijker te maken. Het was flexibel genoeg om gedetailleerde werklastconfiguraties mogelijk te maken, en het bevatte de nodige rapportage om de gegevens bij voltooiing te begrijpen. Jens bleef aan fio werken toen hij bij Oracle en later bij Fusion-io kwam werken.
Fio is een afkorting van Flexible IO, een veelzijdige IO-workloadgenerator. In 2005 was Jens Axboe, de ruggengraat achter en auteur van de IO-stack in de Linux-kernel, het beu om voortdurend eenmalige testprogramma's te schrijven om wijzigingen in het Linux IO-subsysteem te benchmarken of te verifiëren. Als gevolg hiervan werd fio geboren om het werk een stuk gemakkelijker te maken. Het was flexibel genoeg om gedetailleerde werklastconfiguraties mogelijk te maken, en het bevatte de nodige rapportage om de gegevens bij voltooiing te begrijpen. Jens bleef aan fio werken toen hij bij Oracle en later bij Fusion-io kwam werken. Tegenwoordig is de fio-gemeenschap van gebruikers actief en bezig met ontwikkeling, en daarom ontwikkelen ze voortdurend fio en implementeren ze nieuwe functies. Meer dan 100 mensen hebben bijgedragen aan fio, en velen hebben dat meerdere keren gedaan. Dankzij deze toezegging wordt er ongeveer elke 4-6 weken een nieuwe versie van fio uitgebracht en wordt fio veel gebruikt als industriestandaard benchmark, stresstesttool en voor IO-verificatiedoeleinden.
Belangrijkste functieset en mogelijkheden
De twee belangrijkste kenmerken van een goede benchmark zijn het kunnen uitvoeren van de gewenste werklast en het verkrijgen van de gewenste uitvoereenheden. Flexibel zijn was (en is nog steeds) de belangrijkste focus van fio. Het ondersteunt werklastopties die niet in andere benchmarks voorkomen, samen met strikt gedetailleerde IO-statistieken. Elke willekeurige en sequentiële IO-mix, of lees/schrijf-mix, is eenvoudig te definiëren. Het interne ontwerp van fio is ook flexibel. Het definiëren van een workload staat volledig los van de IO-engine (een term die fio gebruikt om aan te geven hoe IO aan de kernel wordt geleverd). Als u bijvoorbeeld een workload met native async op Linux wilt uitvoeren en vervolgens dezelfde workload op Windows wilt vergelijken, wijzigt u gewoon de enkele IO-enginelijn naar de native versie op Windows. Of, als u meer gedetailleerde latentiepercentielstatistieken aan het einde van de distributie wilt, is dat ook gemakkelijk. Geef gewoon de exacte percentielen op waarin u geïnteresseerd bent en fio zal dat voor u bijhouden.
Hoewel aanvankelijk ontwikkeld op Linux, werken de gebieden in fio die niet gebonden zijn aan OS-specifieke functies op elk platform, van Windows tot HP-UX tot Android. Er zijn ook native IO-engines op Linux, Windows, Solaris, enz. Dit is een belangrijk kenmerk voor gemengde omgevingen waar u (zo dicht mogelijk bij) identieke workloads wilt kunnen uitvoeren in verschillende besturingsomgevingen. Bovendien, hoewel fio normaal gesproken rechtstreeks op de doelmachine wordt uitgevoerd, ondersteunt het ook netwerkverbindingen. U kunt een server-backend uitvoeren op de doelmachine(s) en de frontend voor gegevensverzameling uitvoeren op een clientcomputer. Dit maakt het gemakkelijker te beheren, vooral als fio vaak op meerdere machines wordt gebruikt.
Fio is voornamelijk een op tekst gebaseerde CLI-toepassing, hoewel er aanvankelijke ondersteuning bestaat voor een platformonafhankelijke gtk-gebaseerde GUI-frontend (gfio). Op het moment van deze publicatie is gfio opgenomen in de nieuwste release van fio, v2.1, en het zou redelijk stabiel moeten zijn. Het kan dienen als een GUI-frontend voor elke werklast die de CLI-client ondersteunt. Het biedt ook basisondersteuning voor het bewerken van GUI-taakopties en werklast, hoewel volledige ondersteuning nog in ontwikkeling is, aangezien gfio nog in ontwikkeling is.
Fio ondersteunt ook drie verschillende soorten uitvoerformaten. De "klassieke" uitvoer is de standaardwaarde die werklaststatistieken aan het einde van de werklast dumpt. Er is ook ondersteuning voor een CSV-indeling, hoewel dat langzaam aan het afnemen is ten gunste van een op JSON gebaseerd uitvoerformaat. Dit laatste is veel flexibeler en heeft het voordeel dat het eenvoudig te ontleden is voor mensen en computers.
Fio is snel vooruitgegaan dankzij de synergie van zijn levendige gebruikers- en ontwikkelingsgemeenschap. Het is gemakkelijker uit te voeren dan concurrerende projecten, flexibel genoeg om de taken van gebruikers uit te voeren, en het heeft een voldoende lage overhead om elk soort opslagsysteem op volle snelheid aan te drijven. Combineer dat met zijn rijkere opties en rapportage dan al het andere dat er is, en fio is een uitstekende tool.
Waarom StorageReview.com FIO gebruikt
Nu we zijn begonnen met het vergroten van zowel de kwantiteit als de diepte van onze beoordelingen van bedrijfsopslag, hadden we behoefte aan een betere benchmarktool om de prestaties van verschillende opslagproducten op meerdere besturingssystemen nauwkeurig te meten. Traditionele software voor het genereren van werklast, zoals Iometer of Vdbench, biedt beperkte compatibiliteit met hun niet-native besturingssysteem, of ze hebben moeite gehad met het schalen van belastingen voor krachtige opslagapparaten zoals PCIe-toepassingsversnellers of krachtige netwerkopslag. Sinds onze implementatie van FIO is begonnen, heeft het veel van deze problemen opgelost en is het zelfs een stap verder gegaan door scripting voor lange testperiodes te ondersteunen. Deze algehele functionaliteit maakt het onze synthetische benchmark bij uitstek voor alle bedrijfsreviews.
Voor onze beoordelingen gebruiken we FIO om de prestaties van een opslagapparaat over een bepaalde periode te meten. Voor de meeste producten omvat dat 6 uur preconditionering voordat we aan onze hoofdtests beginnen. Voor grotere PCIe-opslagapparaten die tijdens het testen mogelijk niet vele uren in de stabiele toestand komen, preconditioneren we twee keer zo lang, namelijk 12 uur voordat onze hoofdtests beginnen. Ons synthetisch benchmarkproces voor bedrijfsopslag begint met een analyse van de manier waarop de schijf presteert tijdens een grondige voorbereidingsfase. Elk van de vergelijkbare producten wordt eerst veilig gewist met behulp van de tools van de leverancier en vervolgens gepreconditioneerd tot steady-state met dezelfde werklast waarmee het apparaat zal worden getest onder een zware belasting van 16 threads met een uitstekende wachtrij van 16 per thread. Om het proces af te ronden, testen we vervolgens in vaste intervallen in meerdere thread/wachtrij-diepteprofielen om de prestaties bij licht en zwaar gebruik te tonen.
Voorconditionering en primaire steady-state tests:
- Doorvoer (lezen+schrijven IOPS aggregaat)
- Gemiddelde latentie (lees- en schrijflatentie samen gemiddeld)
- Maximale latentie (piek lees- of schrijflatentie)
- Latentie Standaarddeviatie (Lezen + Schrijven Standaarddeviatie samen gemiddeld)
Onze Enterprise Synthetic Workload Analysis bevat verschillende profielen om enkele taken uit de echte wereld weer te geven. Deze profielen zijn ontwikkeld om het gemakkelijker te maken om te vergelijken met onze eerdere benchmarks en met algemeen gepubliceerde waarden zoals max. 4k lees- en schrijfsnelheid en 8k 70/30, wat vaak wordt gebruikt voor bedrijfshardware.
- 4k
- 100% lezen of 100% schrijven
- 100% 4K
- fio –bestandsnaam=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=4k –rwmixread=100 –iodepth=16 –numjobs=16 –runtime=60 –group_reporting –naam=4ktest
- 8k 70/30
- 70% lezen, 30% schrijven
- 100% 8K
- fio –filename=/dev/sdx –direct=1 –rw=randrw –refill_buffers –norandommap –randrepeat=0 –ioengine=libaio –bs=8k –rwmixread=70 –iodepth=16 –numjobs=16 –runtime=60 –group_reporting –naam=8k7030test
Momenteel gebruiken we FIO-versie 2.0.7 (x64) in CentOS 6.3 voor onze Linux-prestatietests en FIO-versie 2.0.12.2 (x64) in Windows Server 2008 R2 SP1 voor onze Windows-prestaties.
StorageReview Enterprise-testplatforms
Opslagoplossingen worden getest met de FIO synthetische benchmark in de StorageReview Enterprise-testlaboratorium gebruik maken van stand-alone servers. We gebruiken de HP ProLiant DL380/DL360 Gen9 om realistische prestaties te leveren, waarbij we alleen de opslagadapter of netwerkinterface wijzigen om onze DL380/DL360 op verschillende opslagproducten aan te sluiten. De DL380/DL360 hebben bewezen uitstekende compatibiliteit te bieden met apparaten van derden, waardoor het een uitstekend platform is voor deze diverse testomgeving.
(Gen1) Lenovo Think Server RD240
- 2 x Intel Xeon X5650 (2.66 GHz, 12 MB cachegeheugen)
- Intel 5500+ ICH10R-chipset
- Geheugen – 8 GB (2 x 4 GB) 1333 MHz DDR3 geregistreerde RDIMM's
- Windows Server 2008 Standard Edition R2 SP1 64-bits en CentOS 6.2 64-bits
- LSI 9211 SAS/SATA 6.0 Gb/s HBA
(Gen2) Lenovo Think Server RD630
- 2 x Intel Xeon E5-2620 (2.0 GHz, 15 MB cache, 6 kernen)
- Intel C602-chipset
- Geheugen – 16 GB (2 x 8 GB) 1333 MHz DDR3 geregistreerde RDIMM's
- Windows Server 2008 R2 SP1 64-bits, Windows Server 2012 Standard, CentOS 6.3 64-bits
- 100GB Micron RealSSD P400e Opstart SSD
- LSI 9207-8i SAS/SATA 6.0Gb/s HBA (voor benchmarking van SSD's of HDD's)
(Gen3) HP ProLiant DL380/DL360 Gen9
- Dubbele Intel E5-2667 v3 CPU's (3.2 GHz, 8 cores, 20 MB cache)
- 256 GB RAM (16 GB x 16 DDR4, 128 GB per CPU)
- Windows Server 2012 R2, CentOS 7.0
- 400 GB opstart-SSD - Windows
- 300 GB opstart-HDD - Linux
- LSI 9300-8e SAS/SATA 12.0 Gb/s HBA (Voor het benchmarken van SSD's of HDD's)
- Supermicro Super Chassis 846BE1C-R1K28B SAS3 JBOD (voor het bevestigen van SSD's of HDD's)