Benchmark dei volumi EBS - Amazon EBS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Benchmark dei volumi EBS

È possibile eseguire test delle prestazioni dei volumi Amazon EBS simulando carichi di lavoro I/O. Di seguito è riportato il procedimento:

  1. Avviare un'istanza ottimizzata per EBS.

  2. Creare nuovi volumi EBS.

  3. Collegare il volume all'istanza ottimizzata per EBS.

  4. Configurare e montare il dispositivo a blocchi.

  5. Installare uno strumento per il benchmark delle prestazioni I/O.

  6. Eseguire il benchmarking delle prestazioni I/O dei volumi.

  7. Eliminare i volumi e terminare l'istanza per non incorrere in ulteriori addebiti.

Importante

Alcune delle procedure comporteranno la distruzione dei dati esistenti sui volumi EBS di cui si esegue il benchmarking. Le procedure di benchmarking si devono utilizzare su volumi appositamente creati a scopo di test, non su volumi di produzione.

Configurare un'istanza

Per ottenere prestazioni ottimali dai volumi EBS, ti consigliamo di utilizzare un'istanza ottimizzata per EBS. Le istanze ottimizzate per EBS distribuiscono un throughput dedicato tra Amazon EC2 ed Amazon EBS, con l'istanza. Le istanze ottimizzate per EBS distribuiscono una larghezza di banda dedicata tra Amazon EC2 ed Amazon EBS, con specifiche a seconda del tipo di istanza.

Per creare un'istanza ottimizzata per EBS, scegli Launch come istanza ottimizzata per EBS quando avvii l'istanza utilizzando la console Amazon EC2 oppure specifica quando usi la riga di comando. --ebs-optimized Assicurati di selezionare un tipo di istanza che supporti questa opzione.

Impostazione dei volumi SSD con capacità di IOPS allocata o SSD per uso generale

Per creare volumi SSD con capacità di IOPS allocata (io1 e io2) o SSD per uso generale (gp2 e gp3) utilizzando la console Amazon EC2, per Tipo di volume scegli SSD con capacità di IOPS allocata (io1), SSD con capacità di IOPS allocata (io2), SSD per uso generale (gp2) o SSD per uso generale (gp3). Nella riga di comando specifica io1, io2, gp2 o gp3 per il parametro --volume-type. Per i volumi io1, io2 e gp3, specifica il numero di operazioni di I/O al secondo (IOPS) per il parametro --iops. Per ulteriori informazioni, consulta Tipi di volume Amazon EBS e Creazione di un volume Amazon EBS.

(Solo istanze Linux) Per i test di esempio, si consiglia di creare un array RAID 0 con 6 volumi, che offra un elevato livello di prestazioni. Dato che verranno addebitati i gigabyte assegnati (e il valore di capacità di IOPS allocata per i volumi io1, io2 e gp3) e non il numero dei volumi, non ci sono costi aggiuntivi se si creano più volumi di minori dimensioni e li si utilizza per creare un set di striping. Se utilizzato per il benchmarking dei volumi, Oracle Orion può simulare lo striping allo stesso modo di Oracle ASM, perciò ti consigliamo di lasciare che sia Orion a eseguire lo striping. Se utilizzi uno strumento diverso per il benchmarking, devi eseguire lo striping dei volumi autonomamente.

Per ulteriori informazioni su come creare un array RAID 0, vedereCrea un array RAID 0.

Configurare volumi HDD ottimizzati per la velocità effettiva (st1) o HDD Cold (sc1)

Per creare un volume st1, scegliere Throughput Optimized HDD quando si utilizza la console Amazon EC2 oppure specificare --type st1 se si utilizza la riga di comando. Per creare un volume sc1, scegli Cold HDD quando utilizzi la console Amazon EC2 oppure specifica --type sc1 se utilizzi la riga di comando. Per informazioni sulla creazione dei volumi EBS, consulta Creazione di un volume Amazon EBS. Per informazioni sul collegamento di questi volumi alla tua istanza, consulta Collegamento di un volume Amazon EBS a un'istanza.

(Solo istanze Linux) AWS fornisce un modello JSON da utilizzare con AWS CloudFormation che semplifica questa procedura di configurazione. Accedere al modello e salvarlo come file JSON. AWS CloudFormation consente di configurare le proprie chiavi SSH e offre un modo più semplice per configurare un ambiente di test delle prestazioni per valutare st1 i volumi. Il modello crea un'istanza della generazione corrente e un volume st1 da 2 TiB e collega il volume all'istanza su /dev/xvdf.

(Solo istanze Linux) Per creare un volume HDD utilizzando il modello
  1. Apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation.

  2. Scegli Create Stack (Crea stack).

  3. Scegliere Upload a Template to Amazon S3 (Carica un modello su Amazon S3) e selezionare il modello JSON ottenuto in precedenza.

  4. Assegnare allo stack un nome come "ebs-perf-testing" e selezionare un tipo di istanza (il predefinito è r3.8xlarge) e la chiave SSH.

  5. Scegliere due volte Next (Avanti), quindi selezionare Create Stack (Crea stack).

  6. Quando lo stato della nuova pila passa da CREATE_IN_PROGRESS e COMPLETE, scegli Outputs (Output) per ottenere la voce DNS pubblica per la nuova istanza, a cui sarà collegato a un volume st1 da 2 TiB.

  7. Eseguire la connessione al nuovo stack usando SSH come utente ec2-user, con l'hostname ottenuto dalla voce DNS nella fase precedente.

  8. Passa a Installare strumenti di benchmarking.

Installare strumenti di benchmarking

Le tabelle seguenti elencano alcuni dei possibili strumenti che è possibile utilizzare per confrontare le prestazioni dei volumi EBS.

Strumento Descrizione

fio

Per il benchmarking delle prestazioni I/O. (Tenere presente che fio ha una dipendenza su libaio-devel)

Per installare fio su Amazon Linux, eseguire questo comando:

[ec2-user ~]$ sudo yum install -y fio

Per installare fio su Ubuntu, eseguire questo comando:

sudo apt-get install -y fio

Strumento di calibrazione Oracle Orion

Per calibrare le prestazioni I/O dei sistemi di archiviazione da utilizzare con i database Oracle.

Strumento Descrizione
DiskSpd

DiskSpd è uno strumento per le prestazioni di archiviazione creato dai team di progettazione di Windows, Windows Server e Cloud Server Infrastructure di Microsoft. È disponibile per il download all'indirizzo https://github.com/Microsoft/diskspd/releases.

Dopo aver scaricato il file diskspd.exe eseguibile, aprire un prompt dei comandi con diritti amministrativi (scegliendo "Esegui come amministratore"), quindi passare alla directory in cui è stato copiato il file diskspd.exe.

Copiare il file eseguibile diskspd.exe desiderato dalla cartella eseguibile appropriata (amd64fre, armfre o x86fre) in un percorso breve e semplice come C:\DiskSpd. Nella maggior parte dei casi si desidera la versione a 64 bit di DiskSpd dalla amd64fre cartella.

Il codice sorgente di DiskSpd è ospitato GitHub all'indirizzo: https://github.com/Microsoft/diskspd.

CrystalDiskMark

CrystalDiskMark è un semplice software di benchmark su disco. È disponibile per il download all'indirizzo https://crystalmark.info/en/software/crystaldiskmark/.

Questi strumenti per il benchmarking supportano un'ampia varietà di parametri di test. Devi utilizzare comandi aderenti ai carichi di lavoro che i volumi possono supportare. I comandi mostrati di seguito sono esempi per aiutarti a iniziare.

Scegliere la lunghezza della coda del volume

Scegliere la migliore lunghezza della coda del volume in base al carico di lavoro e al tipo di volume.

Lunghezza della coda nei volumi SSD

Per determinare la lunghezza ottimale della coda per il carico di lavoro sui volumi SSD, consigliamo di indicare una lunghezza della coda di 1 ogni 1000 IOPS disponibili (baseline per i volumi SSD per uso generale e quantità assegnata per i volumi SSD con capacità di IOPS allocata). Si possono quindi monitorare le prestazioni della tua applicazione e regolare il valore in base ai requisiti dell'applicazione.

Aumentare la lunghezza della coda è vantaggioso fino al raggiungimento del valore della capacità di IOPS allocata, della velocità di trasmissione effettiva o della lunghezza di coda ottimale del sistema, attualmente impostato su 32. Ad esempio, un volume con capacità di IOPS allocata di 3.000 IOPS deve indicare una lunghezza della coda di 3. Devi provare a regolare verso l'alto o verso il basso questi valori per trovare quelli che hanno le prestazioni migliori per la tua applicazione.

Lunghezza della coda nei volumi HDD

Per determinare la lunghezza della coda ottimale per il carico di lavoro sui volumi HDD, ti consigliamo di indicare una lunghezza della coda di almeno 4 mentre esegui almeno 1 MiB di I/O sequenziali. Si possono quindi monitorare le prestazioni della tua applicazione e regolare il valore in base ai requisiti dell'applicazione. Ad esempio, un volume st1 da 2 TiB con throughput burst di 500 MiB/s e IOPS pari a 500 deve indicare a una lunghezza della coda di 4, 8 o 16 nell'esecuzione, rispettivamente, di 1.024, 512 o 256 KiB di I/O sequenziali. Devi provare a regolare questi valori verso l'alto o verso il basso per trovare quelli che hanno le prestazioni migliori per la tua applicazione.

Disabilitazione degli stati C

Prima di eseguire il benchmarking, devi disabilitare gli stati C del processore. I core temporaneamente inattivi in una CPU supportata possono attivare uno stato C per risparmiare energia. Quando il core viene chiamato per riprendere l'elaborazione, passa un determinato lasso di tempo perché diventi pienamente operativo. Questa latenza può interferire con le routine di benchmarking del processore. Per ulteriori informazioni sugli stati C e sui tipi di istanze EC2 che li supportano, consulta Controllo degli stati del processore dell'istanza EC2.

Puoi disabilitare gli stati C su Amazon Linux, RHEL e CentOS nel modo seguente:

  1. Ottenere il numero di stati C.

    $ C:\> cpupower idle-info | grep "Number of idle states:"
  2. Disabilitare gli stati C da c1 a cN. Idealmente, i core dovrebbero essere nello stato c0.

    $ C:\> for i in `seq 1 $((N-1))`; do cpupower idle-set -d $i; done

Puoi disabilitare gli stati C in Windows nel modo seguente:

  1. Inserisci PowerShell l'attuale schema di potenza attiva.

    $current_scheme = powercfg /getactivescheme
  2. Acquisire il GUID della combinazione per il risparmio di energia.

    (Get-WmiObject -class Win32_PowerPlan -Namespace "root\cimv2\power" -Filter "ElementName='High performance'").InstanceID
  3. Ottenere il GUID dell'impostazione per il risparmio di energia.

    (Get-WmiObject -class Win32_PowerSetting -Namespace "root\cimv2\power" -Filter "ElementName='Processor idle disable'").InstanceID
  4. Ottenere il GUID di un sottogruppo di impostazioni per il risparmio di energia.

    (Get-WmiObject -class Win32_PowerSettingSubgroup -Namespace "root\cimv2\power" -Filter "ElementName='Processor power management'").InstanceID
  5. Disabilitare gli stati C impostando il valore dell'indice su 1. Il valore 0 indica che gli stati C sono disabilitati.

    powercfg /setacvalueindex <power_scheme_guid> <power_setting_subgroup_guid> <power_setting_guid> 1
  6. Impostare la combinazione attiva per assicurarsi che le impostazioni vengano salvate.

    powercfg /setactive <power_scheme_guid>

Esecuzione del benchmarking

Le procedure seguenti descrivono i comandi di benchmarking per i diversi tipi di volume EBS.

Esegui il comando seguente su un'istanza ottimizzata per EBS con volumi EBS collegati. Se i volumi EBS sono creati da snapshot, ricorda di inizializzarli prima di eseguire il valore di riferimento. Per ulteriori informazioni, consulta Inizializzazione dei volumi Amazon EBS.

Quando hai finito di testare i volumi, consulta i seguenti argomenti per aiutarti a ripulire: Eliminazione di un volume Amazon EBS e Termina l'istanza.

Benchmark dei volumi SSD con capacità di IOPS allocata e SSD per uso generale

Eseguire fio sull'array RAID 0 creato.

Il seguente comando esegue 16 KB di operazioni di scrittura casuali.

[ec2-user ~]$ sudo fio --directory=/mnt/p_iops_vol0 --ioengine=psync --name fio_test_file --direct=1 --rw=randwrite --bs=16k --size=1G --numjobs=16 --time_based --runtime=180 --group_reporting --norandommap

Il seguente comando esegue 16 KB di operazioni di lettura casuali.

[ec2-user ~]$ sudo fio --directory=/mnt/p_iops_vol0 --name fio_test_file --direct=1 --rw=randread --bs=16k --size=1G --numjobs=16 --time_based --runtime=180 --group_reporting --norandommap

Per ulteriori informazioni sull'interpretazione dei risultati, consulta il tutorial: Inspecting disk IO performance with fio (Ispezione delle prestazione IO del disco con fio).

Eseguire DiskSpd sul volume creato.

Il seguente comando eseguirà un test I/O casuale di 30 secondi utilizzando un file di test da 20 GB situato sull'unità C:, con un rapporto del 25% in scrittura e del 75% in lettura e una dimensione del blocco di 8K. Userà otto thread di lavoro, ciascuno con quattro I/O in sospeso e un seed di valore di entropia di scrittura di 1 GB. I risultati del test verranno salvati in un file di testo chiamato DiskSpeedResults.txt. Questi parametri simulano un carico di lavoro OLTP di SQL Server.

diskspd -b8K -d30 -o4 -t8 -h -r -w25 -L -Z1G -c20G C:\iotest.dat > DiskSpeedResults.txt

Per ulteriori informazioni sull'interpretazione dei risultati, consulta il tutorial: Inspecting disk IO performance with DiskSPd.

Benchmark st1 e sc1 volumi (istanze Linux)

Esegui fio sul tuo volume st1 o sc1.

Il seguente comando esegue 1 MiB di operazioni di lettura sequenziali rispetto a un dispositivo a blocchi st1 (ad esempio, /dev/xvdf):

[ec2-user ~]$ sudo fio --filename=/dev/<device> --direct=1 --rw=read --randrepeat=0 --ioengine=libaio --bs=1024k --iodepth=8 --time_based=1 --runtime=180 --name=fio_direct_read_test

Il seguente comando esegue 1 MiB di operazioni di scrittura sequenziali rispetto a un dispositivo a blocchi st1 collegato:

[ec2-user ~]$ sudo fio --filename=/dev/<device> --direct=1 --rw=write --randrepeat=0 --ioengine=libaio --bs=1024k --iodepth=8 --time_based=1 --runtime=180 --name=fio_direct_write_test

Alcuni carichi di lavoro eseguono un misto di letture e scritture sequenziali su diverse parti del dispositivo a blocchi. Per il benchmarking di un carico di lavoro simile, ti consigliamo di utilizzare processi fio separati e simultanei per le letture e le scritture e di utilizzare l'opzione fio offset_increment per mirare a posizioni diverse del dispositivo a blocchi per ciascun processo.

L'esecuzione di questo carico di lavoro è un po' più complicato rispetto a un carico di lavoro di lettura o scrittura sequenziale. Utilizza un editor di testo per creare un file del processo fio, chiamato fio_rw_mix.cfg in questo esempio, che contenga quanto segue:

[global] clocksource=clock_gettime randrepeat=0 runtime=180 [sequential-write] bs=1M ioengine=libaio direct=1 iodepth=8 filename=/dev/<device> do_verify=0 rw=write rwmixread=0 rwmixwrite=100 [sequential-read] bs=1M ioengine=libaio direct=1 iodepth=8 filename=/dev/<device> do_verify=0 rw=read rwmixread=100 rwmixwrite=0 offset=100g

Quindi, esegui il comando riportato di seguito:

[ec2-user ~]$ sudo fio fio_rw_mix.cfg

Per ulteriori informazioni sull'interpretazione dei risultati, consulta il tutorial: Inspecting disk I/O performance with fio (Ispezione delle prestazione I/O del disco con fio).

Più processi fio per I/O diretti, anche con l'utilizzo di operazioni di lettura o scrittura sequenziali, possono comportare un throughput inferiore al previsto per i volumi st1 e sc1. Ti consigliamo di usare un processo I/O diretto e il parametro iodepth per controllare il numero di operazioni I/O simultanee.