Beräkna benchmark för en disk
Gäller för: ✔️ Virtuella Linux-datorer ✔️ med virtuella Windows-datorer ✔️ – flexibla skalningsuppsättningar ✔️ Enhetliga skalningsuppsättningar
Benchmarking är processen att simulera olika arbetsbelastningar i ditt program och mäta programprestanda för varje arbetsbelastning. Med hjälp av stegen som beskrivs i artikeln design för höga prestanda har du samlat in kraven på programprestanda. Genom att köra benchmarking-verktyg på de virtuella datorer som är värdar för programmet kan du fastställa de prestandanivåer som ditt program kan uppnå med premium-SSD:er. I den här artikeln ger vi dig exempel på benchmarking av en Standard_D8ds_v4 virtuell dator som etablerats med Azure Premium SSD.
Vi har använt vanliga benchmarkingverktyg DiskSpd respektive FIO för Windows respektive Linux. De här verktygen skapar flera trådar som simulerar en produktion som arbetsbelastning och mäter systemets prestanda. Med hjälp av verktygen kan du också konfigurera parametrar som blockstorlek och ködjup, som du normalt inte kan ändra för ett program. Detta ger dig större flexibilitet för att driva maximal prestanda på en storskalig virtuell dator som etableras med premium-SSD:er för olika typer av programarbetsbelastningar. Mer information om varje benchmarking-verktyg finns i DiskSpd och FIO.
Om du vill följa exemplen nedan skapar du en Standard_D8ds_v4 och kopplar fyra premium-SSD:er till den virtuella datorn. Av de fyra diskarna konfigurerar du tre med värdcachelagring som "Ingen" och streckar dem till en volym med namnet NoCacheWrites. Konfigurera värdcachelagring som "ReadOnly" på den återstående disken och skapa en volym med namnet CacheReads med den här disken. Med den här konfigurationen kan du se den maximala läs- och skrivprestandan från en Standard_D8ds_v4 virtuell dator. Detaljerade steg om hur du skapar en Standard_D8ds_v4 med Premium SSD finns i Designa för höga prestanda.
Värm upp cachen
Disken med ReadOnly-värdcachelagring kan ge högre IOPS än diskgränsen. För att få den här maximala läsprestandan från värdcachen måste du först värma upp diskens cacheminne. Detta säkerställer att skrivskyddade IO:er som benchmarking-verktyget kommer att köra på CacheReads-volymen, faktiskt träffar cacheminnet och inte disken direkt. Cachen träffar resulterar i mer IOPS från den enda cacheaktiverade disken.
Viktigt!
Du måste värma upp cachen innan du kör benchmarks varje gång den virtuella datorn startas om.
DISKSPD
Ladda ned DISKSP-verktyget på den virtuella datorn. DISKSPD är ett verktyg som du kan anpassa för att skapa egna syntetiska arbetsbelastningar. Vi använder samma konfiguration som beskrivs ovan för att köra benchmarking-tester. Du kan ändra specifikationerna för att testa olika arbetsbelastningar.
I det här exemplet använder vi följande uppsättning baslinjeparametrar:
- -c200G: Skapar (eller återskapar) exempelfilen som används i testet. Den kan anges i byte, KiB, MiB, GiB eller block. I det här fallet används en stor fil med 200-GiB-målfilen för att minimera minnescachelagring.
- -w100: Anger procentandelen åtgärder som är skrivbegäranden (-w0 motsvarar 100 % läsning).
- -b4K: Anger blockstorleken i byte, KiB, MiB eller GiB. I det här fallet används 4K-blockstorlek för att simulera ett slumpmässigt I/O-test.
- -F4: Anger totalt fyra trådar.
- -r: Anger det slumpmässiga I/O-testet (åsidosätter parametern -s).
- -o128: Anger antalet utestående I/O-begäranden per mål per tråd. Detta kallas även ködjupet. I det här fallet används 128 för att stressa processorn.
- -W7200: Anger varaktigheten för uppvärmningstiden innan mätningarna startar.
- -d30: Anger testets varaktighet, exklusive uppvärmning.
- -Sh: Inaktivera cachelagring av programvara och maskinvara (motsvarande -Suw).
En fullständig lista över parametrar finns i GitHub-lagringsplatsen.
Maximalt antal skriv-IOPS
Vi använder ett högt ködjup på 128, en liten blockstorlek på 8 kB och fyra arbetstrådar för att köra skrivåtgärder. Skrivarbetarna kör trafik på volymen "NoCacheWrites", som har tre diskar med cache inställd på "Ingen".
Kör följande kommando i 30 sekunders uppvärmning och 30 sekunders mätning:
diskspd -c200G -w100 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat
Resultaten visar att den Standard_D8ds_v4 virtuella datorn levererar sin maximala skriv-IOPS-gräns på 12 800.
Högsta läs-IOPS
Vi använder ett högt ködjup på 128, en liten blockstorlek på fyra kB och fyra arbetstrådar för körning av läsåtgärder. Läsarbetarna kör trafik på "CacheReads"-volymen, som har en disk med cache inställd på "ReadOnly".
Kör följande kommando i två timmars uppvärmning och 30 sekunders mätning:
diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat
Resultaten visar att den Standard_D8ds_v4 virtuella datorn levererar sin maximala läs-IOPS-gräns på 77 000.
Maximalt dataflöde
Om du vill få maximalt genomflöde för läsning och skrivning kan du ändra till en större blockstorlek på 64 kB.
FIO
FIO är ett populärt verktyg för att jämföra lagring på de virtuella Linux-datorerna. Den har flexibiliteten att välja olika I/O-storlekar, sekventiella eller slumpmässiga läsningar och skrivningar. Det skapar arbetstrådar eller processer för att utföra de angivna I/O-åtgärderna. Du kan ange vilken typ av I/O-åtgärder varje arbetstråd måste utföra med hjälp av jobbfiler. Vi skapade en jobbfil per scenario som illustreras i exemplen nedan. Du kan ändra specifikationerna i de här jobbfilerna för att jämföra olika arbetsbelastningar som körs på Premium Storage. I exemplen använder vi en Standard_D8ds_v4 som kör Ubuntu. Använd samma konfiguration som beskrivs i början av benchmark-avsnittet och värm upp cacheminnet innan du kör benchmark-testerna.
Innan du börjar laddar du ned FIO och installerar det på den virtuella datorn.
Kör följande kommando för Ubuntu,
apt-get install fio
Vi använder fyra arbetstrådar för att köra skrivåtgärder och fyra arbetstrådar för att köra läsåtgärder på diskarna. Skrivarbetarna kör trafik på volymen "nocache", som har tre diskar med cache inställd på "Ingen". Läsarbetarna kör trafik på "readcache"-volymen, som har en disk med cache inställd på "ReadOnly".
Maximalt antal skriv-IOPS
Skapa jobbfilen med följande specifikationer för att få maximalt antal skriv-IOPS. Ge den namnet "fiowrite.ini".
[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4
[writer1]
rw=randwrite
directory=/mnt/nocache
Observera följande viktiga saker som är i linje med de designriktlinjer som beskrivs i föregående avsnitt. Dessa specifikationer är nödvändiga för att driva maximal IOPS,
- Ett högt ködjup på 256.
- En liten blockstorlek på 4 KB.
- Flera trådar utför slumpmässiga skrivningar.
Kör följande kommando för att starta FIO-testet i 30 sekunder,
sudo fio --runtime 30 fiowrite.ini
När testet körs kan du se antalet skriv-IOPS som den virtuella datorn och Premium-diskarna levererar. Som du ser i exemplet nedan levererar den Standard_D8ds_v4 virtuella datorn sin maximala IOPS-gräns på 12 800 IOPS.
Högsta läs-IOPS
Skapa jobbfilen med följande specifikationer för att få maximal läs-IOPS. Ge den namnet "fioread.ini".
[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4
[reader1]
rw=randread
directory=/mnt/readcache
Observera följande viktiga saker som är i linje med de designriktlinjer som beskrivs i föregående avsnitt. Dessa specifikationer är nödvändiga för att driva maximal IOPS,
- Ett högt ködjup på 256.
- En liten blockstorlek på 4 KB.
- Flera trådar utför slumpmässiga skrivningar.
Kör följande kommando för att starta FIO-testet i 30 sekunder,
sudo fio --runtime 30 fioread.ini
Medan testet körs kan du se antalet lästa IOPS som den virtuella datorn och Premium-diskarna levererar. Som du ser i exemplet nedan levererar den Standard_D8ds_v4 virtuella datorn mer än 77 000 läs-IOPS. Det här är en kombination av disken och cacheprestanda.
Maximal läs- och skriv-IOPS
Skapa jobbfilen med följande specifikationer för att få maximal kombinerad IOPS för läsning och skrivning. Ge den namnet "fioreadwrite.ini".
[global]
size=30g
direct=1
iodepth=128
ioengine=libaio
bs=4k
numjobs=4
[reader1]
rw=randread
directory=/mnt/readcache
[writer1]
rw=randwrite
directory=/mnt/nocache
rate_iops=3200
Observera följande viktiga saker som är i linje med de designriktlinjer som beskrivs i föregående avsnitt. Dessa specifikationer är nödvändiga för att driva maximal IOPS,
- Ett högt ködjup på 128.
- En liten blockstorlek på 4 KB.
- Flera trådar utför slumpmässiga läsningar och skrivningar.
Kör följande kommando för att starta FIO-testet i 30 sekunder,
sudo fio --runtime 30 fioreadwrite.ini
Medan testet körs kan du se antalet kombinerade läs- och skriv-IOPS som den virtuella datorn och Premium-diskarna levererar. Som du ser i exemplet nedan levererar den Standard_D8ds_v4 virtuella datorn mer än 90 000 kombinerade läs- och skriv-IOPS. Det här är en kombination av disken och cacheprestanda.
Maximalt kombinerat dataflöde
Använd en större blockstorlek och ett stort ködjup med flera trådar som utför läsningar och skrivningar för att få maximalt kombinerat dataflöde för läsning och skrivning. Du kan använda blockstorleken 64 kB och ködjupet 128.
Nästa steg
Gå vidare till vår artikel om att utforma för höga prestanda.
I den artikeln skapar du en checklista som liknar ditt befintliga program för prototypen. Med benchmarkingverktyg kan du simulera arbetsbelastningarna och mäta prestanda i prototypprogrammet. På så sätt kan du avgöra vilket diskerbjudande som kan matcha eller överträffa programmets prestandakrav. Sedan kan du implementera samma riktlinjer för ditt produktionsprogram.