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 benchmarkingverktyg 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:n till den virtuella datorn. Av de fyra diskarna konfigurerar du tre med värdcachelagring som "Ingen" och strimlar dem till en volym med namnet NoCacheWrites. Konfigurera cachelagring av värd 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 högsta läs- och skrivprestanda 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ärma 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 cacheminnet för den här disken. Detta säkerställer att läs-IO:erna som benchmarking-verktyget kommer att köra på CacheReads-volymen, faktiskt träffar cachen 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 cachelagring av minne.
  • -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 betona 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.

För 3208642560 totala byte, maximalt totalt I/Os på 391680, med totalt 101,97 MiB/s och totalt 13052,65 I/O per sekund.

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 att köra 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 högsta läs-IOPS-gräns på 77 000.

För 9652785152 totala byte fanns det 2356637 totala I/Os, 306,72 totalt MiB/s och totalt 78521,23 I/Os per sekund.

Maximalt dataflöde

Om du vill få maximalt dataflö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. Den 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 cachen 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 viktiga för att driva maximal IOPS,

  • Ett högt ködjup på 256.
  • En liten blockstorlek på 4 kB.
  • Flera trådar som 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-skrivgräns på 12 800 IOPS.
Antal skrivåtgärder för virtuella IOPS-datorer och premium-SSD:n som levereras, visar att skrivningar är 13,1 000 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 viktiga för att driva maximal IOPS,

  • Ett högt ködjup på 256.
  • En liten blockstorlek på 4 kB.
  • Flera trådar som 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

När testet körs kan du se antalet läs-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.
Skärmbild av antalet skrivåtgärder för virtuella IOPS-datorer och premium-SSD:n som levereras, visar att läsningarna är 78,6 000.

Högsta läs- och skriv-IOPS

Skapa jobbfilen med följande specifikationer för att få maximalt kombinerat 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 viktiga för att driva maximal IOPS,

  • Ett högt ködjup på 128.
  • En liten blockstorlek på 4 kB.
  • Flera trådar som 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.
Kombinerad IOPS för läsning och skrivning visar att läsningar är 78,3 k och skrivningar är 12,6 000 IOPS.

Maximalt kombinerat dataflöde

Om du vill få maximalt dataflöde för läsning och skrivning använder du en större blockstorlek och ett stort ködjup med flera trådar som utför läsningar och skrivningar. 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. Genom att göra det kan du avgöra vilka diskerbjudanden som kan matcha eller överträffa programmets prestandakrav. Sedan kan du implementera samma riktlinjer för ditt produktionsprogram.