Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ Macchine virtuali Linux ✔️ Macchine virtuali Windows ✔️ Set di scalabilità flessibili ✔️ Set di scalabilità uniformi
Il benchmarking è il processo di simulazione di carichi di lavoro diversi nell'applicazione e la misurazione delle prestazioni dell'applicazione per ogni carico di lavoro. Usando i passaggi descritti nell'articolo Progettazione per prestazioni elevate, sono stati raccolti i requisiti di prestazioni dell'applicazione. Eseguendo gli strumenti di benchmarking nelle macchine virtuali che ospitano l'applicazione, è possibile determinare i livelli di prestazioni che l'applicazione può ottenere con unità SSD Premium. In questo articolo vengono forniti esempi di benchmarking di una macchina virtuale Standard_D8ds_v4 di cui è stato effettuato il provisioning con unità SSD Premium di Azure.
Sono stati usati gli strumenti di benchmarking comuni DiskSpd e FIO, rispettivamente per Windows e Linux. Questi strumenti generano più thread simulando una produzione come un carico di lavoro e misurano le prestazioni del sistema. Usando gli strumenti è anche possibile configurare parametri come le dimensioni del blocco e la profondità della coda, che in genere non è possibile modificare per un'applicazione. In questo modo è possibile ottenere maggiore flessibilità per migliorare le prestazioni massime in una macchina virtuale a scalabilità elevata di cui è stato effettuato il provisioning con unità SSD Premium per diversi tipi di carichi di lavoro dell'applicazione. Per altre informazioni su ogni strumento di benchmarking, vedere DiskSpd e FIO.
Per seguire gli esempi seguenti, creare un Standard_D8ds_v4 e collegare quattro UNITÀ SSD Premium alla macchina virtuale. Dei quattro dischi, configurare tre con memorizzazione nella cache dell'host come "Nessuno" ed eseguirne lo striping in un volume denominato NoCacheWrites. Configurare la memorizzazione nella cache dell'host come "ReadOnly" nel disco rimanente e creare un volume denominato CacheReads con questo disco. Con questa configurazione è possibile visualizzare le massime prestazioni di lettura e scrittura da una macchina virtuale Standard_D8ds_v4. Per istruzioni dettagliate sulla creazione di un Standard_D8ds_v4 con unità SSD Premium, vedere Progettazione per prestazioni elevate.
Riscaldamento della cache
Il disco con caching host ReadOnly è in grado di offrire un numero di operazioni di I/O al secondo (IOPS) superiore al limite del disco. Per ottenere questa massima prestazioni di lettura dalla cache host, è prima necessario riscaldare la cache di questo disco. Ciò garantisce che gli I/O di lettura generati dallo strumento di benchmarking sul volume CacheReads effettivamente raggiungano la cache e non direttamente il disco. I cache hit comportano un numero maggiore di IOPS (operazioni di input/output al secondo) dal singolo disco abilitato per la cache.
Importante
È necessario riscaldare la cache prima di eseguire benchmark ogni volta che la macchina virtuale viene riavviata.
DISKSPD
Scaricare lo strumento DISKSP nella macchina virtuale. DISKSPD è uno strumento che è possibile personalizzare per creare carichi di lavoro sintetici personalizzati. Verrà usata la stessa configurazione descritta in precedenza per eseguire test di benchmarking. È possibile modificare le specifiche per testare carichi di lavoro diversi.
In questo esempio viene usato il set di parametri di base seguente:
- -c200G: crea (o ricrea) il file di esempio usato nel test. Può essere impostato in byte, KiB, MiB, GiB o blocchi. In questo caso, viene utilizzato un file di grandi dimensioni da 200 GiB per ridurre al minimo il caching della memoria.
- -w100: Specifica la percentuale di operazioni che sono richieste di scrittura (-w0 equivale a 100% letture).
- -b4K: indica le dimensioni del blocco in byte, KiB, MiB o GiB. In questo caso, viene usata la dimensione del blocco 4K per simulare un test di I/O casuale.
- -F4: imposta un totale di quattro thread.
- -r: indica il test di I/O casuale (esegue l'override del parametro -s).
- -o128: indica il numero di richieste di I/O in sospeso per obiettivo per thread. Questa è anche conosciuta come profondità della coda. In questo caso, 128 viene usato per stressare la CPU.
- -W7200: specifica la durata del tempo di riscaldamento prima dell'avvio delle misurazioni.
- -d30: specifica la durata del test, senza includere il riscaldamento.
- -Sh: Disabilitare la cache di scrittura hardware e software (equivalente a -Suw).
Per un elenco completo dei parametri, vedere il repository GitHub.
Massimo di IOPS di scrittura
Viene usata una profondità elevata della coda di 128, una dimensione di blocco ridotta di 8 KB e quattro thread di lavoro per l'esecuzione delle operazioni di scrittura. I processi di scrittura guidano il traffico sul volume "NoCacheWrites", che ha tre dischi con cache impostata su "nessuna".
Eseguire il comando seguente per 30 secondi di riscaldamento e 30 secondi di misurazione:
diskspd -c200G -w100 -b8K -F4 -r -o128 -W30 -d30 -Sh testfile.dat
I risultati mostrano che la macchina virtuale Standard_D8ds_v4 fornisce il suo limite massimo di 12.800 operazioni di I/O al secondo in scrittura.
Massimo IOPS di lettura
Usiamo una grande profondità di coda di 128, una piccola dimensione di blocco di quattro KB e quattro thread di lavoro per eseguire le operazioni di lettura. I lavoratori di lettura generano traffico sul volume "CacheReads", che ha un disco con cache impostata su "ReadOnly".
Eseguire il comando seguente per due ore di riscaldamento e 30 secondi di misurazione:
diskspd -c200G -b4K -F4 -r -o128 -W7200 -d30 -Sh testfile.dat
I risultati mostrano che la macchina virtuale Standard_D8ds_v4 sta raggiungendo il suo limite massimo di 77.000 letture IOPS.
Velocità effettiva massima
Per ottenere la velocità effettiva massima di lettura e scrittura, è possibile passare a una dimensione di blocco maggiore di 64 KB.
FIO
FIO è uno strumento comune per eseguire il benchmark dell'archiviazione nelle macchine virtuali Linux. Offre la flessibilità necessaria per selezionare diverse dimensioni di I/O, letture e scritture sequenziali o casuali. Genera thread di lavoro o processi per eseguire le operazioni di I/O specificate. È possibile specificare il tipo di operazioni di I/O che ogni thread di lavoro deve eseguire usando i file di processo. Abbiamo creato un file di lavoro per ogni scenario illustrato negli esempi seguenti. È possibile modificare le specifiche in questi file di processo per valutare diversi carichi di lavoro che utilizzano l'Archiviazione Premium. Negli esempi viene usato un Standard_D8ds_v4 che esegue Ubuntu. Usare la stessa configurazione descritta all'inizio della sezione del benchmark e scaldare la cache prima di eseguire i test di benchmark.
Prima di iniziare, scaricare FIO e installarlo nella macchina virtuale.
Eseguire il comando seguente per Ubuntu,
apt-get install fio
Vengono usati quattro thread di lavoro per guidare le operazioni di scrittura e quattro thread di lavoro per l'esecuzione delle operazioni di lettura sui dischi. I processi di scrittura generano traffico sul volume "nocache", che ha tre dischi con cache impostata su "nessuna". I lavoratori di lettura guidano il traffico sul volume "readcache", che ha un disco con cache impostata su "Sola lettura".
Numero massimo di operazioni di I/O al secondo di scrittura
Crea il file di lavoro con le specifiche seguenti per ottenere il numero massimo di IOPS in scrittura. Denominarlo "fiowrite.ini".
[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4
[writer1]
rw=randwrite
directory=/mnt/nocache
Tenere presente quanto segue gli elementi chiave in linea con le linee guida di progettazione descritte nelle sezioni precedenti. Queste specifiche sono essenziali per favorire il numero massimo di operazioni di I/O al secondo,
- Una coda con profondità elevata pari a 256.
- Dimensioni di blocco ridotte di 4 KB.
- Più thread che eseguono scritture casuali.
Eseguire il comando seguente per avviare il test FIO per 30 secondi,
sudo fio --runtime 30 fiowrite.ini
Durante l'esecuzione dei test, è possibile visualizzare il numero di operazioni di I/O al secondo di scrittura che vengono recapitate dalla macchina virtuale e dai dischi Premium. Come illustrato nell'esempio seguente, la macchina virtuale Standard_D8ds_v4 raggiunge il limite massimo di 12.800 operazioni di I/O al secondo in scrittura.
Massimo IOPS di lettura
Creare il file di processo con le seguenti specifiche per ottenere il massimo numero di IOPS di lettura. Denominarlo "fioread.ini".
[global]
size=30g
direct=1
iodepth=256
ioengine=libaio
bs=4k
numjobs=4
[reader1]
rw=randread
directory=/mnt/readcache
Tenere presente quanto segue gli elementi chiave in linea con le linee guida di progettazione descritte nelle sezioni precedenti. Queste specifiche sono essenziali per favorire il numero massimo di operazioni di I/O al secondo,
- Profondità elevata della coda di 256.
- Una piccola dimensione di blocco di 4 KB.
- Più thread che eseguono scritture casuali.
Eseguire il comando seguente per avviare il test FIO per 30 secondi,
sudo fio --runtime 30 fioread.ini
Durante l'esecuzione del test, è possibile visualizzare il numero di IOPS di lettura forniti dalla macchina virtuale e dai dischi Premium. Come illustrato nell'esempio seguente, la macchina virtuale Standard_D8ds_v4 soddisfa oltre 77.000 IOPS di lettura. Si tratta di una combinazione del disco e delle prestazioni della cache.
Numero massimo di operazioni di I/O al secondo di lettura e scrittura
Creare il file di lavoro con le specifiche seguenti per ottenere il numero massimo di IOPS di lettura e scrittura combinati. Denominarlo "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
Tenere presente quanto segue gli elementi chiave in linea con le linee guida di progettazione descritte nelle sezioni precedenti. Queste specifiche sono essenziali per favorire il numero massimo di operazioni di I/O al secondo,
- Coda ad alta profondità di 128.
- Una piccola dimensione di blocco di 4 KB.
- Più thread che eseguono letture e scritture casuali.
Eseguire il comando seguente per avviare il test FIO per 30 secondi,
sudo fio --runtime 30 fioreadwrite.ini
Durante l'esecuzione dei test, è possibile visualizzare il numero di operazioni di I/O al secondo combinate di lettura e scrittura che vengono recapitate dalla macchina virtuale e dai dischi Premium. Come illustrato nell'esempio seguente, la macchina virtuale Standard_D8ds_v4 offre più di 90.000 operazioni di I/O al secondo di lettura e scrittura combinate. Si tratta di una combinazione del disco e delle prestazioni della cache.
Velocità effettiva combinata massima
Per ottenere la massima velocità effettiva di lettura e scrittura combinata, usare una dimensione del blocco maggiore e una profondità elevata della coda con più thread che eseguono letture e scritture. È possibile usare una dimensione del blocco di 64 KB e la profondità della coda di 128.
Passaggi successivi
Procedere con l'articolo sulla progettazione per prestazioni elevate.
In questo articolo viene creato un elenco di controllo simile all'applicazione esistente per il prototipo. Usando gli strumenti di benchmarking è possibile simulare i carichi di lavoro e misurare le prestazioni nell'applicazione prototipo. In questo modo, è possibile determinare quale offerta di disco può corrispondere o superare i requisiti di prestazioni dell'applicazione. È quindi possibile implementare le stesse linee guida per l'applicazione di produzione.