Een benchmark-test uitvoeren op een schijf
Van toepassing op: ✔️ Virtuele Linux-machines voor Windows-VM's ✔️ ✔️ Flexibele schaalsets Uniform-schaalsets ✔️
Benchmarking is het proces voor 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 prestaties, hebt u de prestatievereisten van de toepassing verzameld. Door benchmarkinghulpprogramma's uit te voeren op de VM's die de toepassing hosten, kunt u de prestatieniveaus bepalen die uw toepassing kan bereiken met premium SSD's. In dit artikel vindt u voorbeelden van het benchmarken van een Standard_D8ds_v4 VM die is ingericht met Azure Premium SSD's.
We hebben algemene benchmarkinghulpprogramma's DiskSpd en FIO gebruikt voor Respectievelijk Windows en Linux. Met deze hulpprogramma's worden meerdere threads gebruikt om een productie zoals workload te simuleren en de systeemprestaties te meten. Met behulp van 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 stimuleren op een vm met hoge schaal die is ingericht met Premium SSD's voor verschillende typen toepassingsworkloads. Ga naar DiskSpd en FIO voor meer informatie over elk benchmarkprogramma.
Als u de onderstaande voorbeelden wilt volgen, maakt u een Standard_D8ds_v4 en koppelt u vier Premium SSD's aan de VIRTUELE machine. Van de vier schijven configureert u drie met hostcaching als Geen en streept u ze in een volume met de naam NoCacheWrites. Configureer hostcaching 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 Standard_D8ds_v4-VM zien. Zie Ontwerpen voor hoge prestaties voor gedetailleerde stappen over het maken van een Standard_D8ds_v4 met premium SSD's.
De cache opwarmen
De schijf met readOnly-hostcaching kan hogere IOPS geven dan de schijflimiet. Als u deze maximale leesprestaties van de hostcache wilt ophalen, moet u eerst de cache van deze schijf opwarmen. Dit zorgt ervoor dat de Lees-IOs die door het benchmarkprogramma worden aangedreven op cachereads-volume, daadwerkelijk de cache raakt en niet rechtstreeks op de schijf. De cache raakt resulteert in meer IOPS van de schijf waarvoor één cache is ingeschakeld.
Belangrijk
U moet de cache opwarmen voordat benchmarks worden uitgevoerd telkens wanneer de VIRTUELE machine 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: maakt (of maakt het opnieuw) het voorbeeldbestand dat in de test wordt gebruikt. Deze kan worden ingesteld in bytes, KiB, MiB, GiB of blokken. In dit geval wordt een groot bestand van 200 GiB-doelbestand gebruikt om geheugencache te minimaliseren.
- -w100: Hiermee geeft u het percentage bewerkingen op dat schrijfaanvragen zijn (-w0 is gelijk aan 100% lezen).
- -b4K: Geeft de blokgrootte in bytes, KiB, MiB of GiB aan. In dit geval wordt 4K-blokgrootte gebruikt om een willekeurige I/O-test te simuleren.
- -F4: Hiermee stelt u in totaal vier threads in.
- -r: Geeft de willekeurige I/O-test aan (overschrijft de parameter -s).
- -o128: Geeft het aantal openstaande I/O-aanvragen per doel per thread aan. Dit wordt ook wel de diepte van de wachtrij genoemd. In dit geval wordt 128 gebruikt om de CPU te benadrukken.
- -W7200: Hiermee geeft u de duur van de opwarmtijd aan voordat de metingen beginnen.
- -d30: Hiermee geeft u de duur van de test op, niet inclusief opwarmen.
- -Sh: Caching van software- en hardware-schrijfbewerkingen uitschakelen (gelijk aan -Suw).
Zie de GitHub-opslagplaats voor een volledige lijst met parameters.
Maximum aantal schrijf-IOPS
We gebruiken een hoge wachtrijdiepte van 128, een kleine blokgrootte van 8 kB en vier werkrolthreads voor het stimuleren van schrijfbewerkingen. De schrijfmedewerkers rijden verkeer op het volume NoCacheWrites, met drie schijven met cache 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 laten zien dat de Standard_D8ds_v4 VM de maximale IOPS-limiet voor schrijfbewerkingen van 12.800 levert.
Maximale lees-IOPS
We gebruiken een hoge wachtrijdiepte van 128, een kleine blokgrootte van vier kB en vier werkrolthreads voor het stimuleren van leesbewerkingen. De leeswerkers rijden verkeer op het volume CacheReads, met één schijf met cache ingesteld op ReadOnly.
Voer de volgende opdracht uit voor twee uur warm-up en 30 seconden meting:
diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat
Resultaten tonen aan dat de Standard_D8ds_v4 VM de maximale IOPS-limiet voor lezen van 77.000 levert.
Maximale doorvoer
Als u de maximale lees- en schrijfdoorvoer wilt ophalen, kunt u overschakelen naar een groter blok van 64 kB.
FIO
FIO is een populair hulpprogramma om opslag te benchmarken op de Linux-VM's. Het heeft de flexibiliteit om verschillende IO-grootten, opeenvolgende of willekeurige lees- en schrijfbewerkingen te selecteren. Hiermee worden werkthreads of -processen gebruikt om de opgegeven I/O-bewerkingen uit te voeren. U kunt opgeven welk type I/O-bewerkingen elke werkrolthread moet uitvoeren met behulp van taakbestanden. We hebben één taakbestand per scenario gemaakt dat wordt geïllustreerd in de onderstaande voorbeelden. U kunt de specificaties in deze taakbestanden wijzigen om verschillende workloads te benchmarken die worden uitgevoerd in Premium Storage. In de voorbeelden gebruiken we een Standard_D8ds_v4 met Ubuntu. Gebruik dezelfde installatie die wordt beschreven in het begin van de benchmarksectie en warm de cache op voordat u de benchmarktests uitvoert.
Voordat u begint, downloadt u FIO en installeert u deze op uw virtuele machine.
Voer de volgende opdracht uit voor Ubuntu.
apt-get install fio
We gebruiken vier werkrolthreads voor het stimuleren van schrijfbewerkingen en vier werkrolthreads voor het besturen van leesbewerkingen op de schijven. De schrijfmedewerkers rijden verkeer op het volume nocache, met drie schijven met cache ingesteld op 'Geen'. De leeswerkers rijden verkeer op het volume readcache, met één schijf met cache ingesteld op ReadOnly.
Maximum aantal schrijf-IOPS
Maak het taakbestand met de volgende specificaties om maximale schrijf-IOPS te verkrijgen. Geef deze de naam '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 stimuleren van maximale IOPS,
- Een hoge wachtrijdiepte van 256.
- Een kleine blokgrootte van 4 kB.
- Meerdere threads die willekeurige schrijfbewerkingen uitvoeren.
Voer de volgende opdracht uit om de FIO-test gedurende 30 seconden te starten,
sudo fio --runtime 30 fiowrite.ini
Terwijl de test wordt uitgevoerd, kunt u zien hoeveel schrijf-IOPS de VM en Premium-schijven leveren. Zoals wordt weergegeven in het onderstaande voorbeeld, levert de Standard_D8ds_v4 VM de maximale IOPS-limiet voor schrijven van 12.800 IOPS.
Maximale lees-IOPS
Maak het taakbestand met de volgende specificaties om de maximale lees-IOPS te verkrijgen. Noem het 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 stimuleren van maximale IOPS,
- Een hoge wachtrijdiepte van 256.
- Een kleine blokgrootte van 4 kB.
- Meerdere threads die willekeurige schrijfbewerkingen uitvoeren.
Voer de volgende opdracht uit om de FIO-test gedurende 30 seconden te starten,
sudo fio --runtime 30 fioread.ini
Terwijl de test wordt uitgevoerd, kunt u zien hoeveel lees-IOPS de VM en Premium-schijven leveren. Zoals wordt weergegeven in het onderstaande voorbeeld, levert de Standard_D8ds_v4 VM meer dan 77.000 Lees-IOPS. Dit is een combinatie van de schijf en de cacheprestaties.
Maximale IOPS voor lezen en schrijven
Maak het taakbestand met de volgende specificaties om maximaal gecombineerde IOPS voor lezen en schrijven te verkrijgen. Noem het 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 stimuleren van maximale IOPS,
- Een hoge wachtrijdiepte van 128.
- Een kleine blokgrootte van 4 kB.
- Meerdere threads die willekeurige lees- en schrijfbewerkingen uitvoeren.
Voer de volgende opdracht uit om de FIO-test gedurende 30 seconden te starten,
sudo fio --runtime 30 fioreadwrite.ini
Tijdens de testuitvoeringen kunt u zien hoeveel gecombineerde IOPS voor lezen en schrijven de VM en Premium-schijven leveren. Zoals wordt weergegeven in het onderstaande voorbeeld, levert de Standard_D8ds_v4 VM meer dan 90.000 gecombineerde IOPS voor lezen en schrijven. Dit is een combinatie van de schijf en de cacheprestaties.
Maximale gecombineerde doorvoer
Als u de maximale gecombineerde lees- en schrijfdoorvoer wilt ophalen, gebruikt u een grotere blokgrootte en een grote wachtrijdiepte met meerdere threads die lees- en schrijfbewerkingen uitvoeren. U kunt een blokgrootte van 64 kB en 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. Hierdoor kunt u bepalen welke schijfaanbiedingen overeenkomen met of voldoen aan de prestatievereisten van uw toepassing. Vervolgens kunt u dezelfde richtlijnen implementeren voor uw productietoepassing.