Een benchmark-test uitvoeren op een schijf

Van toepassing op: ✔️ virtuele Linux✔️ Windows's ✔️ flexibele schaalsets ✔️ Uniform-schaalsets

Benchmarking is het proces van het simuleren van verschillende workloads in uw toepassing en het meten van de prestaties van de toepassing voor elke workload. Met behulp van de stappen die worden beschreven in het artikel Ontwerpen voor hoge prestatieshebt u de prestatievereisten voor toepassingen verzameld. Door benchmarkinghulpprogramma's uit te werken op de VM's die als host voor de toepassing worden gebruikt, kunt u de prestatieniveaus bepalen die uw toepassing kan behalen met Premium-SD's. In dit artikel vindt u voorbeelden van het benchmarken van een virtuele Standard_D8ds_v4 die is ingericht met Azure Premium-SD's.

We hebben veelgebruikte benchmarkinghulpprogramma's DiskSpd en FIO gebruikt voor Windows en Linux. Met deze hulpprogramma's worden meerdere threads geproduceerd die een productie,zoals workload simuleren, en worden de systeemprestaties gemeten. Met de hulpprogramma's kunt u ook parameters configureren, zoals blokgrootte en wachtrijdiepte, die u normaal gesproken niet kunt wijzigen voor een toepassing. Dit biedt u meer flexibiliteit om de maximale prestaties te verhogen op een grootschalige VM die is ingericht met Premium - SD's voor verschillende typen toepassingsworkloads. Ga naar DiskSpd en FIO voor meer informatie over elk benchmarking-hulpprogramma.

Als u de onderstaande voorbeelden wilt volgen, maakt u een Standard_D8ds_v4 en koppelt u vier Premium-SD's aan de VM. Van de vier schijven configureert u er drie met hostcaching als 'Geen' en stript u deze in een volume met de naam NoCacheWrites. Configureer hostcacheopslag als 'ReadOnly' op de resterende schijf en maak een volume met de naam CacheReads met deze schijf. Met deze installatie kunt u de maximale lees- en schrijfprestaties van een virtuele Standard_D8ds_v4 zien. Zie Ontwerpen voor hoge prestaties Standard_D8ds_v4 stappen voor het maken van een Standard_D8ds_v4 met Premium-SD's.

De cache opwarmen

De schijf met ReadOnly-host caching kan een hogere IOPS geven dan de schijflimiet. Als u deze maximale leesprestaties uit de hostcache wilt halen, moet u eerst de cache van deze schijf opwarmen. Dit zorgt ervoor dat de lees-IO's die het benchmarkinghulpprogramma gebruikt op het volume CacheReads, daadwerkelijk de cache raakt en niet rechtstreeks op de schijf. De cachetreffers resulteren in meer IOPS van de schijf met één cache ingeschakeld.

Belangrijk

U moet de cache opwarmen voordat u benchmarks kunt uitvoeren telkens wanneer de VM opnieuw wordt opgestart.

DISKSPD

Download het hulpprogramma DISKSP op de virtuele machine. DISKSPD is een hulpprogramma dat u kunt aanpassen om uw eigen synthetische workloads te maken. We gebruiken dezelfde installatie die hierboven wordt beschreven om benchmarkingtests uit te voeren. U kunt de specificaties wijzigen om verschillende workloads te testen.

In dit voorbeeld gebruiken we de volgende set basislijnparameters:

  • -c200G: hiermee wordt het voorbeeldbestand gemaakt (of opnieuw gemaakt) dat in de test is gebruikt. Deze kan worden ingesteld in bytes, KiB, MiB, GiB of blokken. In dit geval wordt een groot bestand met een doelbestand van 200 GiB gebruikt om geheugen caching te minimaliseren.
  • -w100: hiermee geeft u het percentage bewerkingen dat schrijfaanvragen zijn (-w0 is gelijk aan 100% lezen).
  • -b4K: geeft de blokgrootte aan in bytes, KiB, MiB of GiB. In dit geval wordt een blokgrootte van 4K gebruikt om een willekeurige I/O-test te simuleren.
  • -F4: stelt een totaal van vier threads.
  • -r: geeft de willekeurige I/O-test aan (overschrijvingen de parameter -s).
  • -o128: geeft het aantal openstaande I/O-aanvragen per doel per thread aan. Dit wordt ook wel de wachtrijdiepte genoemd. In dit geval wordt 128 gebruikt om de CPU te stressen.
  • -W7200: hiermee geeft u de duur op van de opwarmtijd voordat de metingen starten.
  • -d30: hiermee geeft u de duur van de test op, met inbegrip van de opwarmtijd.
  • -Sh: software en hardware schrijven in de caching uitschakelen (gelijk aan -Suw).

Zie de opslagplaats GitHub een volledige lijst met parameters.

Maximum aantal schrijf-IOPS

We gebruiken een hoge wachtrijdiepte van 128, een kleine blokgrootte van 8 kB en vier werkthreads voor het uitvoeren van schrijfbewerkingen. De schrijfmedewerkers regelen het verkeer op het volume 'NoCacheWrites', dat drie schijven heeft waarvoor de cache is ingesteld op 'Geen'.

Voer de volgende opdracht uit voor 30 seconden opwarmen en 30 seconden meting:

diskspd -c200G -w100 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat

Resultaten geven aan dat de Standard_D8ds_v4 VM de maximale IOPS-limiet voor schrijven van 12.800 levert.

For 3208642560 total bytes, max total I/Os of 391680, with a total of 101.97 MiB/s, and a total of 13052.65 I/O per second.

Maximum aantal IOPS voor lezen

We gebruiken een hoge wachtrijdiepte van 128, een kleine blokgrootte van vier kB en vier werkthreads voor het uitvoeren van leesbewerkingen. De leesmedewerkers regelen het verkeer op het volume 'CacheReads', waarbij één schijf met cache is ingesteld op ReadOnly.

Voer de volgende opdracht uit voor twee uur opwarmen en 30 seconden meting:

diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat

Resultaten geven aan dat de Standard_D8ds_v4 VM de maximale IOPS-limiet voor lezen levert van 77.000.

For 9652785152 total bytes, there were 2356637 total I/Os, at 306.72 total MiB/s, and a total of 78521.23 I/Os per second.

Maximale doorvoer

Om de maximale lees- en schrijfdoorvoer te krijgen, kunt u wijzigen in een groter blok van 64 kB.

FIO

FIO is een populair hulpprogramma voor het benchmarken van opslag op de Linux-VM's. Het biedt de flexibiliteit om verschillende I/O-grootten, sequentiële of willekeurige lees- en schrijfproeven te selecteren. Hiermee worden werkthreads of -processen uitgevoerd om de opgegeven I/O-bewerkingen uit te voeren. U kunt het type I/O-bewerkingen opgeven dat elke werkthread moet uitvoeren met behulp van taakbestanden. We hebben één taakbestand per scenario gemaakt dat in de onderstaande voorbeelden wordt geïllustreerd. U kunt de specificaties in deze taakbestanden wijzigen om verschillende workloads te benchmarken die worden uitgevoerd op Premium Storage. In de voorbeelden gebruiken we een Standard_D8ds_v4 Ubuntu wordt uitgevoerd. Gebruik dezelfde installatie die is beschreven in het begin van de benchmarksectie en warm de cache op voordat u de benchmarktests gaat uitvoeren.

Voordat u begint, downloadt u FIO en installeert u dit op uw virtuele machine.

Voer de volgende opdracht uit voor Ubuntu,

apt-get install fio

We gebruiken vier werkthreads voor het uitvoeren van schrijfbewerkingen en vier werkthreads voor het uitvoeren van leesbewerkingen op de schijven. De schrijfmedewerkers regelen het verkeer op het volume 'nocache', dat drie schijven heeft waarvoor de cache is ingesteld op 'Geen'. De leesmedewerkers regelen het verkeer op het leescachevolume, waarbij één schijf met cache is ingesteld op ReadOnly.

Maximum aantal schrijf-IOPS

Maak het taakbestand met de volgende specificaties om een maximale IOPS voor schrijven op te halen. Noem deze 'fiowrite.ini'.

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[writer1]
rw=randwrite
directory=/mnt/nocache

Let op de volgende belangrijke zaken die in overeenstemming zijn met de ontwerprichtlijnen die in de vorige secties zijn besproken. Deze specificaties zijn essentieel voor het maken van een maximale IOPS,

  • Een hoge wachtrijdiepte van 256.
  • Een kleine blokgrootte van 4 kB.
  • Meerdere threads die willekeurige schrijfingen uitvoeren.

Voer de volgende opdracht uit om de FIO-test 30 seconden te laten duren.

sudo fio --runtime 30 fiowrite.ini

Terwijl de test wordt uitgevoerd, kunt u het aantal schrijf-IOPS zien dat de VM en Premium schijven leveren. Zoals u in het voorbeeld hieronder kunt zien, Standard_D8ds_v4 virtuele VM de maximale IOPS-limiet voor schrijven van 12.800 IOPS.
Number of write IOPS VM and premium SSDs are delivering, shows that writes are 13.1k IOPS.

Maximum aantal IOPS voor lezen

Maak het taakbestand met de volgende specificaties om de maximale IOPS voor lezen op te halen. Noem deze 'fioread.ini'.

[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4

[reader1]
rw=randread
directory=/mnt/readcache

Let op de volgende belangrijke zaken die in overeenstemming zijn met de ontwerprichtlijnen die in de vorige secties zijn besproken. Deze specificaties zijn essentieel voor het maken van een maximale IOPS,

  • Een hoge wachtrijdiepte van 256.
  • Een kleine blokgrootte van 4 kB.
  • Meerdere threads die willekeurige schrijfingen uitvoeren.

Voer de volgende opdracht uit om de FIO-test 30 seconden te laten duren.

sudo fio --runtime 30 fioread.ini

Terwijl de test wordt uitgevoerd, kunt u het aantal lees-IOPS zien dat de VM en Premium schijven leveren. Zoals u in het voorbeeld hieronder kunt zien, levert Standard_D8ds_v4 VM meer dan 77.000 lees-IOPS. Dit is een combinatie van de prestaties van de schijf en de cache.
Screenshot of the number of write IOPS VM and premium SSDs are delivering, shows that reads are 78.6k.

Maximale IOPS voor lezen en schrijven

Maak het taakbestand met de volgende specificaties om het maximale aantal gecombineerde IOPS voor lezen en schrijven op te halen. Noem deze '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

Let op de volgende belangrijke zaken die in overeenstemming zijn met de ontwerprichtlijnen die in de vorige secties zijn besproken. Deze specificaties zijn essentieel voor het maken van een maximale IOPS,

  • Een hoge wachtrijdiepte van 128.
  • Een kleine blokgrootte van 4 kB.
  • Meerdere threads die willekeurige lees- en schrijfingen uitvoeren.

Voer de volgende opdracht uit om de FIO-test 30 seconden te laten lopen,

sudo fio --runtime 30 fioreadwrite.ini

Terwijl de test wordt uitgevoerd, kunt u zien hoeveel gecombineerde IOPS voor lezen en schrijven de VM en Premium schijven leveren. Zoals u in het voorbeeld hieronder kunt zien, levert Standard_D8ds_v4 VM meer dan 90.000 gecombineerde IOPS voor lezen en schrijven. Dit is een combinatie van de prestaties van de schijf en de cache.
Combined read and write IOPS, shows that reads are 78.3k and writes are 12.6k IOPS.

Maximale gecombineerde doorvoer

Als u de maximale gecombineerde lees- en schrijfdoorvoer wilt krijgen, gebruikt u een grotere blokgrootte en een grote wachtrijdiepte met meerdere threads die lees- en schrijfingen uitvoeren. U kunt een blokgrootte van 64 kB en een wachtrijdiepte van 128 gebruiken.

Volgende stappen

Ga verder met ons artikel over ontwerpen voor hoge prestaties.

In dat artikel maakt u een controlelijst die vergelijkbaar is met uw bestaande toepassing voor het prototype. Met benchmarkinghulpprogramma's kunt u de workloads simuleren en de prestaties van de prototypetoepassing meten. Als u dit doet, kunt u bepalen welke schijfaanbieding kan overeenkomen met of de prestatievereisten van uw toepassing kan verhogen. Vervolgens kunt u dezelfde richtlijnen implementeren voor uw productietoepassing.