

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à.

# Effettua il benchmark dei volumi Amazon EBS
<a name="benchmark_procedures"></a>

Puoi testare le prestazioni dei volumi Amazon EBS simulando I/O i carichi di lavoro. Di seguito è riportato il procedimento:

1. Avvia un'istanza. EBS-optimized 

1. Creare nuovi volumi EBS.

1. Allega i volumi alla tua EBS-optimized istanza.

1. Configurare e montare il dispositivo a blocchi.

1. Installa uno strumento per confrontare I/O le prestazioni.

1. Effettua il benchmark I/O delle prestazioni dei tuoi volumi.

1. 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
<a name="set_up_instance"></a>

Per ottenere prestazioni ottimali dai volumi EBS, ti consigliamo di utilizzare un' EBS-optimizedistanza. EBS-optimized le istanze forniscono larghezza di banda dedicata tra Amazon EC2 e Amazon EBS, con specifiche che dipendono dal tipo di istanza.

Per creare un' EBS-optimized istanza, scegli **Launch come EBS-optimized istanza** quando avvii l'istanza utilizzando la console Amazon EC2 o **--ebs-optimized** specifica quando usi la riga di comando. 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
<a name="setupPIOPS"></a>

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 `io1``io2`, e `gp3` volumi, specificate il numero di I/O operazioni al secondo (IOPS) per il **--iops** parametro. Per ulteriori informazioni, consultare [Tipi di volume Amazon EBS](ebs-volume-types.md) e [Creazione di un volume Amazon EBS](ebs-creating-volume.md).

(*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, vedere[Crea un array RAID 0](raid-config.md#create-raid-array).

### Configurare volumi HDD ottimizzati per la velocità effettiva (`st1`) o HDD Cold (`sc1`)
<a name="set_up_hdd"></a>

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](ebs-creating-volume.md). Per informazioni sul collegamento di questi volumi alla tua istanza, consulta [Collega un volume Amazon EBS a un'istanza Amazon EC2](ebs-attaching-volume.md).

(*Solo istanze Linux*) AWS fornisce un modello JSON da utilizzare con CloudFormation che semplifica questa procedura di configurazione. Accedere al [modello](https://s3.amazonaws.com/cloudformation-examples/community/st1_cloudformation_template.json) e salvarlo come file JSON. 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 CloudFormation console all'indirizzo. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)

1. Scegli **Create Stack** (Crea stack).

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

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

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

1. 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.

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

1. Passa a [Installare strumenti di benchmarking](#install_tools).

## Installare strumenti di benchmarking
<a name="install_tools"></a>

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

### Istanze Linux
<a name="install_tools-linux"></a>


| Strumento | Descrizione | 
| --- | --- | 
| fio | Per il benchmarking delle prestazioni I/O . (Tenere presente che **fio** ha una dipendenza su `libaio-devel`)<br />Per installare **fio** su Amazon Linux, eseguire questo comando:<pre>$ sudo yum install -y fio</pre><br />Per installare **fio** su Ubuntu, eseguire questo comando:<pre>sudo apt-get install -y fio</pre> | 
| [Strumento di calibrazione Oracle Orion](https://docs.oracle.com/cd/E18283_01/server.112/e16638/iodesign.htm#BABFCFBC) | Per calibrare I/O le prestazioni dei sistemi di storage da utilizzare con i database Oracle. | 

### Istanze Windows
<a name="install_tools-windows"></a>


| Strumento | Description | 
| --- | --- | 
| [DiskSpd](https://github.com/microsoft/diskspd/releases) | 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](https://github.com/Microsoft/diskspd/releases).<br />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`. <br />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. <br />Il codice sorgente di DiskSpd è ospitato GitHub su: [https://github.com/Microsoft/diskspd](https://github.com/Microsoft/diskspd). | 
| CrystalDiskMark | CrystalDiskMark è un semplice software di benchmark del disco. È disponibile per il download all'indirizzo [https://crystalmark.info/en/software/crystaldiskmark/](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
<a name="UnderstandingQueueLength"></a>

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

### Lunghezza della coda sui volumi SSD-backed
<a name="SSD_queue"></a>

Per determinare la lunghezza di coda ottimale per il carico di lavoro sui SSD-backed volumi, si consiglia di impostare una lunghezza di coda pari a 1 ogni 1000 IOPS disponibili (valore di base per i volumi SSD a uso generico e la quantità assegnata per i volumi SSD Provisioned IOPS). 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 per i volumi HDD-backed
<a name="HDD_queue"></a>

Per determinare la lunghezza di coda ottimale per il carico di lavoro sui HDD-backed volumi, si consiglia di impostare come target una lunghezza di coda di almeno 4 durante l'esecuzione sequenziale di 1 MiB. I/Os Si possono quindi monitorare le prestazioni della tua applicazione e regolare il valore in base ai requisiti dell'applicazione. Ad esempio, un `st1` volume da 2 TiB con throughput burst di 500 MiB/s e IOPS di 500 dovrebbe avere come target una lunghezza della coda di 4, 8 o 16 mentre esegue rispettivamente 1.024 KiB, 512 KiB o 256 KiB in sequenza. I/Os 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.

## Disabilita C-states
<a name="cstates"></a>

Prima di eseguire il benchmarking, è necessario disattivare il processore C-states. I core temporaneamente inattivi in una CPU supportata possono inserire un C-state 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 su C-states quali tipi di istanza EC2 li supportano, consulta [Controllo dello stato del processore per l'](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html)istanza EC2.

### Istanze Linux
<a name="cstates-linux"></a>

Puoi disabilitare C-states su Amazon Linux, RHEL e CentOS come segue:

1. Ottieni il numero di. C-states

   ```
   $ cpupower idle-info | grep "Number of idle states:"
   ```

1. Disabilita il C-states da c1 a cN. Idealmente, i core dovrebbero essere nello stato c0.

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

### Istanze Windows
<a name="cstates-windows"></a>

È possibile disabilitarlo C-states su Windows come segue:

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

   ```
   $current_scheme = powercfg /getactivescheme
   ```

1. Acquisire il GUID della combinazione per il risparmio di energia.

   ```
   (Get-WmiObject -class Win32_PowerPlan -Namespace "root\cimv2\power" -Filter "ElementName='High performance'").InstanceID          
   ```

1. 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                  
   ```

1. 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
   ```

1. Disabilita C-states impostando il valore dell'indice su 1. Il valore 0 indica che C-states sono disabilitati.

   ```
   powercfg /setacvalueindex {{<power_scheme_guid>}} {{<power_setting_subgroup_guid>}} {{<power_setting_guid>}} 1
   ```

1. Impostare la combinazione attiva per assicurarsi che le impostazioni vengano salvate.

   ```
   powercfg /setactive {{<power_scheme_guid>}}
   ```

## Esecuzione del benchmarking
<a name="perform_benchmarking"></a>

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

Esegui i seguenti comandi su un' EBS-optimized istanza 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 [Inizializza manualmente i volumi dopo la creazione](initalize-volume.md#ebs-initialize).

**Suggerimento**  
Puoi utilizzare gli istogrammi di I/O latenza forniti dalle statistiche dettagliate sulle prestazioni di EBS per confrontare la distribuzione delle prestazioni nei test di benchmarking I/O . Per ulteriori informazioni, consulta [Statistiche dettagliate sulle prestazioni di Amazon EBS](nvme-detailed-performance-stats.md).

[Quando hai finito di testare i volumi, consulta i seguenti argomenti per aiutarti a ripulire: [Eliminazione di un volume Amazon EBS](ebs-deleting-volume.md) e Termina l'istanza.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)

### Benchmark dei volumi SSD con capacità di IOPS allocata e SSD per uso generale
<a name="piops_benchmarking"></a>

#### Istanze Linux
<a name="piops_benchmarking-linux"></a>

Eseguire **fio** sull'array RAID 0 creato.

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

```
$ 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.

```
$ 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)](https://www.linux.com/training-tutorials/inspecting-disk-io-performance-fio/).

#### Istanze Windows
<a name="piops_benchmarking-windows"></a>

Eseguire **DiskSpd** sul volume creato.

Il comando seguente eseguirà un I/O test casuale di 30 secondi utilizzando un file di test da 20 GB situato sull'`C:`unità, con un rapporto di scrittura del 25% e di lettura del 75% e una dimensione del blocco di 8K. Utilizzerà otto thread di lavoro, ciascuno con quattro eccezionali I/Os, e un 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](https://sqlperformance.com/2015/08/io-subsystem/diskspd-test-storage).

### Benchmark `st1` e `sc1` volumi (istanze Linux)
<a name="hdd_benchmarking"></a>

Esegui **fio** sul tuo volume `st1` o `sc1`.

**Nota**  
Prima di eseguire questi test, imposta buffered I/O sull'istanza come descritto in. [*Aumenta la capacità di lettura anticipata per carichi di lavoro ad alta velocità e con elevata capacità di lettura su e (solo istanze Linux) `st1` `sc1`*](ebs-performance.md#read_ahead) 

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

```
$ 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:

```
$ 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:

```
$ sudo fio fio_rw_mix.cfg
```

Per ulteriori informazioni sull'interpretazione dei risultati, consultate questo tutorial: [ I/O Ispezione delle prestazioni del disco](https://www.linux.com/training-tutorials/inspecting-disk-io-performance-fio/) con fio.

Più **fio** lavori diretti I/O, anche se si utilizzano operazioni sequenziali di lettura o scrittura, possono comportare una velocità di trasmissione e di volume inferiori al previsto. `st1` `sc1` Si consiglia di utilizzare un I/O processo diretto e utilizzare il `iodepth` parametro per controllare il numero di operazioni I/O simultanee.