Fio är en förkortning för Flexible IO, en mångsidig IO-arbetsbelastningsgenerator. Redan 2005 var Jens Axboe, ryggraden bakom och författaren till IO-stacken i Linux-kärnan, trött på att ständigt skriva enstaka testprogram för att benchmarka eller verifiera ändringar i Linux IO-undersystemet. Som ett resultat föddes fio för att göra jobbet mycket lättare. Det var tillräckligt flexibelt för att tillåta detaljerade arbetsbelastningsinställningar, och det innehöll den nödvändiga rapporteringen för att förstå data vid slutförandet. Jens fortsatte att arbeta på fio när han började på Oracle och senare Fusion-io.
Fio är en förkortning för Flexible IO, en mångsidig IO-arbetsbelastningsgenerator. Redan 2005 var Jens Axboe, ryggraden bakom och författaren till IO-stacken i Linux-kärnan, trött på att ständigt skriva enstaka testprogram för att benchmarka eller verifiera ändringar i Linux IO-undersystemet. Som ett resultat föddes fio för att göra jobbet mycket lättare. Det var tillräckligt flexibelt för att tillåta detaljerade arbetsbelastningsinställningar, och det innehöll den nödvändiga rapporteringen för att förstå data vid slutförandet. Jens fortsatte att arbeta på fio när han började på Oracle och senare Fusion-io. Idag är fio-användarnas community aktiva och engagerade i utveckling, och följaktligen utvecklar de kontinuerligt fio och implementerar nya funktioner. Mer än 100 personer har bidragit till fio, och många har gjort det flera gånger. Tack vare detta engagemang släpps en ny version av fio ungefär var 4-6:e vecka, och fio används i stor utsträckning som ett industristandardriktmärke, stresstestverktyg och för IO-verifieringsändamål.
Huvudfunktioner och funktioner
De två primära funktionerna i ett bra riktmärke är att kunna köra den arbetsbelastning du vill ha och att få de önskade utdataenheterna. Att vara flexibel var (och fortsätter att vara) huvudfokus för fio. Den stöder arbetsbelastningsalternativ som inte finns i andra benchmarks tillsammans med noggrant detaljerad IO-statistik. Varje form av slumpmässig och sekventiell IO-mix, eller läs/skriv-mix, är lätt att definiera. Den interna designen hos fio är också flexibel. Att definiera en arbetsbelastning är helt separat från IO-motorn (en term fio använder för att beteckna hur IO levereras till kärnan). Om du till exempel vill köra en arbetsbelastning med inbyggd async på Linux och sedan jämföra samma arbetsbelastning på Windows, ändra bara den enda IO-motorlinjen till den ursprungliga versionen på Windows. Eller, om du vill ha mer detaljerad latenspercentilstatistik i slutet av distributionen, är det också enkelt. Ange bara de exakta percentilerna som du är intresserad av så spårar fio det åt dig.
Även om de ursprungligen utvecklades på Linux, fungerar de områden i fio som inte är bundna till OS-specifika funktioner på alla plattformar från Windows till HP-UX till Android. Det finns även inbyggda IO-motorer på Linux, Windows, Solaris, etc. Detta är en nyckelfunktion för blandade miljöer där du vill kunna köra (så nära) identiska arbetsbelastningar i olika operativa miljöer. Dessutom, medan fio normalt körs direkt på måldatorn, stöder den också nätverksanslutningar. Du kan köra en serverbackend på måldatorn(erna) och köra datainsamlingsgränssnittet på en klientdator. Detta gör det lättare att hantera, speciellt om fio ofta används på flera maskiner.
Fio är övervägande en textbaserad CLI-applikation, även om initialt stöd finns för ett plattformsoberoende gtk-baserat GUI-gränssnitt (gfio). Vid tidpunkten för denna publicering ingår gfio i den senaste fio-versionen, v2.1, och den bör vara ganska stabil. Den kan fungera som ett GUI-gränssnitt för alla arbetsbelastningar som CLI-klienten stöder. Det ger också grundläggande stöd för GUI-redigering av jobbalternativ och arbetsbelastningar, även om fullt stöd fortfarande är under utveckling eftersom gfio är ett pågående arbete.
Fio stöder även tre olika typer av utdataformat. Den "klassiska" utgången är standarden som dumpar arbetsbelastningsstatistik i slutet av arbetsbelastningen. Det finns också stöd för ett CSV-format, även om det sakta minskar till förmån för ett JSON-baserat utdataformat. Det senare är mycket mer flexibelt och har fördelen att det är enkelt att tolka för människor och datorer.
Fio har gått framåt snabbt tack vare synergieffekterna av dess livliga användar- och utvecklingscommunity. Det är lättare att köra än konkurrerande projekt, flexibelt nog att utföra användarnas uppgifter, och det har tillräckligt låg overhead för att driva alla typer av lagringssystem i full hastighet. Kombinera det med dess rikare alternativ och rapportering än något annat där ute, och fio är ett utmärkt verktyg.
Varför StorageReview.com använder FIO
När vi har börjat öka både kvantiteten och djupet av våra företagslagringsrecensioner, har vi varit i behov av ett bättre benchmarkingverktyg för att exakt mäta prestanda för olika lagringsprodukter över flera operativsystem. Traditionell mjukvara som genererar arbetsbelastning som Iometer eller Vdbench erbjuder begränsad kompatibilitet med deras icke-infödda operativsystem, eller så har de haft svårt att skala belastningar för högpresterande lagringsenheter som PCIe-applikationsacceleratorer eller högpresterande nätverkslagring. Sedan vår implementering av FIO började har den löst många av dessa problem och har till och med gått ett steg längre genom att stödja skript under långa testperioder. Denna övergripande funktionalitet gör den till vårt syntetiska riktmärke för alla företagsrecensioner.
För våra recensioner använder vi FIO för att mäta prestandan hos en lagringsenhet under en given tidsperiod. För de flesta produkter inkluderar det 6 timmars förkonditionering innan vi går in i våra huvudtester. För större PCIe-lagringsenheter som kanske inte går in i steady-state under många timmar under testning, förutsätter vi dubbelt så lång tid på 12 timmar innan våra huvudtester börjar. Vår syntetiska benchmarkprocess för företagslagring börjar med en analys av hur enheten presterar under en grundlig förkonditioneringsfas. Var och en av de jämförbara produkterna raderas först säkert med hjälp av leverantörens verktyg och förkonditioneras sedan till steady-state med samma arbetsbelastning som enheten kommer att testas med under en tung belastning på 16 trådar med en enastående kö på 16 per tråd. Som avrundning av processen testar vi sedan i fasta intervaller i flera tråd-/ködjupsprofiler för att visa prestanda under lätt och tung användning.
Förkonditionering och primära stationära tester:
- Genomströmning (Read+Write IOPS Aggregate)
- Genomsnittlig fördröjning (läs+skrivfördröjning i medeltal)
- Max fördröjning (maximal läs- eller skrivfördröjning)
- Latens standardavvikelse (läs+skriv standardavvikelse i genomsnitt)
Vår Enterprise Synthetic Workload Analysis innehåller olika profiler för att spegla vissa verkliga uppgifter. Dessa profiler har utvecklats för att göra det lättare att jämföra med våra tidigare riktmärken samt allmänt publicerade värden som max 4k läs- och skrivhastighet och 8k 70/30, som vanligtvis används för företagshårdvara.
- 4k
- 100% Läs eller 100% Skriv
- 100 % 4k
- fio –filename=/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 –namn=4ktest
- 8k 70/30
- 70 % läser, 30 % skriver
- 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 –namn=8k7030test
För närvarande använder vi FIO version 2.0.7 (x64) i CentOS 6.3 för våra Linux-prestandatester och FIO version 2.0.12.2 (x64) i Windows Server 2008 R2 SP1 för vår Windows-prestanda.
StorageReview Enterprise Testing Platforms
Lagringslösningar testas med FIO syntetiska riktmärke i StorageReview Enterprise Test Lab använda fristående servrar. Vi använder HP ProLiant DL380/DL360 Gen9 för att visa realistisk prestanda, och byter endast lagringsadaptern eller nätverksgränssnittet för att ansluta vår DL380/DL360 till olika lagringsprodukter. DL380/DL360 har visat sig erbjuda stor kompatibilitet med tredjepartsenheter, vilket gör den till en utmärkt plattform för denna mångsidiga testmiljö.
(Gen1) Lenovo ThinkServer RD240
- 2 x Intel Xeon X5650 (2.66 GHz, 12 MB cache)
- Intel 5500+ ICH10R Chipset
- Minne – 8GB (2 x 4GB) 1333Mhz DDR3-registrerade RDIMM
- Windows Server 2008 Standard Edition R2 SP1 64-bitars och CentOS 6.2 64-bitars
- LSI 9211 SAS/SATA 6.0 Gb/s HBA
(Gen2) Lenovo ThinkServer RD630
- 2 x Intel Xeon E5-2620 (2.0 GHz, 15 MB cache, 6 kärnor)
- Intel C602 Chipset
- Minne – 16GB (2 x 8GB) 1333Mhz DDR3-registrerade RDIMM
- Windows Server 2008 R2 SP1 64-bitars, Windows Server 2012 Standard, CentOS 6.3 64-bitars
- 100GB Micron RealSSD P400e Starta SSD
- LSI 9207-8i SAS/SATA 6.0 Gb/s HBA (för benchmarking av SSD- eller hårddiskar)
(Gen3) HP ProLiant DL380/DL360 Gen9
- Dubbla Intel E5-2667 v3-processorer (3.2 GHz, 8-kärnor, 20 MB cache)
- 256 GB RAM (16 GB x 16 DDR4, 128 GB per CPU)
- Windows Server 2012 R2, CentOS 7.0
- 400 GB Boot SSD – Windows
- 300 GB Boot HDD – Linux
- LSI 9300-8e SAS/SATA 12.0Gb/s HBA (För benchmarking av SSD- eller hårddiskar)
- Supermicro SuperChassis 846BE1C-R1K28B SAS3 JBOD (för att fästa SSD- eller hårddiskar)