

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Évaluez les volumes Amazon EBS
<a name="benchmark_procedures"></a>

Vous pouvez tester les performances des volumes Amazon EBS en simulant I/O des charges de travail. Procédez comme suit :

1. Lancez une EBS-optimized instance.

1. Créez des volumes EBS.

1. Attachez les volumes à votre EBS-optimized instance.

1. Configurez et installez le périphérique de stockage en mode bloc.

1. Installez un outil pour évaluer les I/O performances.

1. Comparez les I/O performances de vos volumes.

1. Supprimez vos volumes et mettez l’instance hors service pour éviter de générer des frais.

**Important**  
Certaines des procédures entraîneront la destruction des données existantes sur les volumes EBS que vous comparez. Les procédures de comparaison sont conçues pour être utilisées sur des volumes créés spécialement à des fins de tests, et pas sur des volumes de production.

## Configurer votre instance
<a name="set_up_instance"></a>

Pour optimiser les performances des volumes EBS, nous vous recommandons d'utiliser une EBS-optimized instance. EBS-optimized les instances fournissent une bande passante dédiée entre Amazon EC2 et Amazon EBS, les spécifications dépendant du type d'instance.

Pour créer une EBS-optimized instance, choisissez **Launch as an EBS-optimized instance lorsque vous lancez l'instance** à l'aide de la console Amazon EC2, ou spécifiez-le **--ebs-optimized** lors de l'utilisation de la ligne de commande. Assurez-vous de sélectionner un type d'instance compatible avec cette option.

### Configurer des volumes Provisioned IOPS SSD ou SSD à usage général
<a name="setupPIOPS"></a>

Pour créer un SSD à IOPS provisionnés (`io1` et `io2`) ou un SSD à usage général (`gp2` et `gp3`) à l’aide de la console Amazon EC2, pour **Volume type** (Type de volume), choisissez **Provisioned IOPS SSD (io1)** (SSD à IOPS provisionnés (io1)), **Provisioned IOPS SSD (io2)** (SSD à IOPS provisionnés (io2)), **General Purpose SSD (gp2)** (SSD à usage général (gp2)) ou **General Purpose SSD (gp3)** (SSD à usage général (gp3)). Sur la ligne de commande, spécifiez `io1`, `io2`, `gp2` ou `gp3` pour le paramètre **--volume-type**. Pour les `gp3` volumes `io1``io2`, spécifiez le nombre d' I/O opérations par seconde (IOPS) pour le **--iops** paramètre. Pour plus d’informations, consultez [Types de volume Amazon EBS](ebs-volume-types.md) et [Créez un volume Amazon EBS.](ebs-creating-volume.md).

(*Instances Linux uniquement*) Pour les exemples de tests, nous vous recommandons de créer une matrice RAID 0 de 6 volumes, qui offre un haut niveau de performance. Dans la mesure où vous êtes facturé en fonction des gigaoctets provisionnés (et du nombre d’IOPS provisionnés pour les volumes io1, io2 et gp3), et non du nombre de volumes, aucun coût supplémentaire ne sera appliqué pour la création de plusieurs volumes de plus petite taille, puis pour leur utilisation afin de créer un agrégat par bandes. Si vous utilisez Oracle Orion afin de comparer vos volumes, vous pouvez effectuer une simulation de l’agrégation par bandes comme avec Oracle ASM. C’est pourquoi nous vous recommandons de laisser Orion se charger de l’agrégation par bandes. Si vous utilisez un outil de comparaison différent, vous devez effectuer vous-même l’agrégation des volumes par bandes.

Pour plus d'informations sur la création d'une matrice RAID 0, consultez[Création d'une matrice RAID 0](raid-config.md#create-raid-array).

### Configuration des volumes HDD à débit optimisé (`st1`) ou HDD à froid (`sc1`)
<a name="set_up_hdd"></a>

Pour créer un volume `st1`, choisissez ** HDD à débit optimisé** lorsque vous créez le volume via la console Amazon EC2 ou spécifiez **--type `st1`** si vous utilisez la ligne de commande. Pour créer un volume `sc1`, choisissez HDD à froid lorsque vous créez le volume via la console Amazon EC2 ou spécifiez **--type `sc1`** si vous utilisez la ligne de commande. Pour plus d’informations sur la création de volumes EBS, consultez [Créez un volume Amazon EBS.](ebs-creating-volume.md). Pour plus d’informations sur la liaison de ces volumes à votre instance, consultez [Associer un volume Amazon EBS à une instance Amazon EC2](ebs-attaching-volume.md).

(*instances Linux uniquement*) AWS fournit un modèle JSON à utiliser CloudFormation qui simplifie cette procédure de configuration. Accédez au [modèle](https://s3.amazonaws.com/cloudformation-examples/community/st1_cloudformation_template.json) et enregistrez-le sous forme de fichier JSON. CloudFormation vous permet de configurer vos propres clés SSH et de configurer plus facilement un environnement de test de performance pour évaluer les `st1` volumes. Le modèle crée une instance de la génération actuelle et un volume `st1` de 2 Tio, et attache ce dernier à l’instance dans `/dev/xvdf`. 

**(*Instances Linux uniquement*) Pour créer un volume HDD à l'aide du modèle**

1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Choisissez **Create Stack**.

1. Choisissez **Télécharger un modèle sur Amazon S3** et sélectionnez le modèle JSON que vous avez obtenu précédemment.

1. Attribuez un nom à votre stack (comme "test-perf-ebs"), puis sélectionnez un type d’instance (par défaut : r3.8xlarge) et une clé SSH.

1. Choisissez **Suivant** à deux reprises, puis sélectionnez **Créer une pile**.

1. Lorsque l’état de votre nouvelle pile passe de **CREATE\_IN\_PROGRESS** à **COMPLETE**, choisissez **Outputs** (Sorties) afin d’obtenir l’entrée DNS publique de votre nouvelle instance, qui sera attachée à un volume `st1` de 2 Tio.

1. Connectez-vous à votre nouvelle pile via SSH en tant qu’utilisateur **ec2-user**, avec le nom d’hôte obtenu à partir de l’entrée DNS lors de l’étape précédente. 

1. Passez à [Installer les outils d’évaluation](#install_tools).

## Installer les outils d’évaluation
<a name="install_tools"></a>

Les tableaux suivants répertorient certains des outils que vous pouvez utiliser pour évaluer les performances des volumes EBS.

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


| Outil | Description | 
| --- | --- | 
| fio | Pour l'analyse comparative des I/O performances. (Notez que la commande **fio** a une dépendance sur `libaio-devel`.)<br />Pour installer **fio** sur Amazon Linux, exécutez la commande suivante :<pre>$ sudo yum install -y fio</pre><br />Pour installer **fio** sur Ubuntu, exécutez la commande suivante :<pre>sudo apt-get install -y fio</pre> | 
| [Outil de calibrage Oracle Orion](https://docs.oracle.com/cd/E18283_01/server.112/e16638/iodesign.htm#BABFCFBC) | Pour calibrer les I/O performances des systèmes de stockage à utiliser avec les bases de données Oracle. | 

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


| Outil | Description | 
| --- | --- | 
| [DiskSpd](https://github.com/microsoft/diskspd/releases) | DiskSpd est un outil de performance du stockage développé par les équipes d'ingénierie Windows, Windows Server et Cloud Server Infrastructure de Microsoft. Il est disponible en téléchargement à l'adresse [https://github.com/Microsoft/diskspd/releases](https://github.com/Microsoft/diskspd/releases).<br />Après avoir téléchargé le fichier exécutable `diskspd.exe`, ouvrez une invite de commande avec des droits d’administration (en choisissant « Exécuter en tant qu’administrateur »), puis accédez au répertoire où vous avez copié le fichier `diskspd.exe`. <br />Copiez le fichier `diskspd.exe` exécutable souhaité à partir du dossier exécutable approprié (`amd64fre`, `armfre` ou `x86fre)` vers un chemin d’accès court et simple tel que `C:\DiskSpd`. Dans la plupart des cas, vous aurez besoin de la version 64 bits de DiskSpd depuis le `amd64fre` dossier. <br />Le code source de DiskSpd est hébergé GitHub sur : [https://github.com/Microsoft/diskspd](https://github.com/Microsoft/diskspd). | 
| CrystalDiskMark | CrystalDiskMark est un simple logiciel de test de disque. Il est disponible en téléchargement à l'adresse [https://crystalmark.info/en/software/crystaldiskmark/](https://crystalmark.info/en/software/crystaldiskmark/). | 

Ces outils de comparaison prennent en charge un large éventail de paramètres de test. Vous devez utiliser des commandes proches des charges de travail que vos volumes devront prendre en charge. Les commandes ci-dessous sont proposées à titre d’exemple pour vous permettre de débuter.

## Choisir la longueur de la file d’attente d’un volume
<a name="UnderstandingQueueLength"></a>

Choisissez la meilleure longueur de file d’attente du volume en fonction de votre charge de travail et du type de volume.

### Longueur de file d'attente sur les SSD-backed volumes
<a name="SSD_queue"></a>

Pour déterminer la longueur de file d'attente optimale pour votre charge de travail sur les SSD-backed volumes, nous vous recommandons de cibler une longueur de file d'attente de 1 pour 1 000 IOPS disponibles (valeur de référence pour les volumes SSD à usage général et quantité provisionnée pour les volumes SSD IOPS provisionnés). Vous pouvez ensuite contrôler les performances de votre application et ajuster cette valeur en fonction des exigences de votre application.

L’augmentation de la longueur de file d’attente offre un avantage jusqu’à ce que vous atteigniez le nombre d’IOPS provisionnés, le débit ou la valeur optimale de la longueur de file d’attente du système, actuellement définie sur 32. Par exemple, un volume avec 3 000 IOPS provisionnés doit cibler une longueur de file d’attente de 3. Vous devez essayer d’augmenter ou de diminuer ces valeurs afin de déterminer ce qui fonctionne le mieux pour votre application.

### Longueur de file d'attente sur les HDD-backed volumes
<a name="HDD_queue"></a>

Pour déterminer la longueur de file d'attente optimale pour votre charge de travail sur les HDD-backed volumes, nous vous recommandons de cibler une longueur de file d'au moins 4 lors de l'exécution séquentielle de 1 Mo. I/Os Vous pouvez ensuite contrôler les performances de votre application et ajuster cette valeur en fonction des exigences de votre application. Par exemple, un `st1` volume de 2 TiB avec un débit en rafale de 500 MiB/s et un IOPS de 500 doit cibler une longueur de file d'attente de 4, 8 ou 16 tout en exécutant une séquence séquentielle de 1 024 KiB, 512 KiB ou 256 KiB respectivement. I/Os Vous devez essayer d’augmenter ou de diminuer ces valeurs afin de déterminer ce qui fonctionne le mieux pour votre application.

## Désactiver C-states
<a name="cstates"></a>

Avant d'exécuter l'analyse comparative, vous devez désactiver le processeur C-states. Les cœurs temporairement inactifs d'un processeur compatible peuvent entrer un C-state pour économiser de l'énergie. Lorsque le cœur est appelé afin de reprendre le traitement, un certain laps de temps est nécessaire avant que le cœur soit à nouveau entièrement opérationnel. Cette latence peut interférer avec les routines de comparaison du processeur. Pour plus d'informations sur les types d'instances EC2 qui les prennent en charge C-states et sur les types d'instances EC2 qui les prennent en charge, consultez la section [Contrôle de l'état du processeur pour votre instance EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html).

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

Vous pouvez C-states le désactiver sur Amazon Linux, RHEL et CentOS comme suit :

1. Obtenez le numéro de C-states.

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

1. Désactive le C-states de c1 à cN. Idéalement, l’état des cœurs doit être c0.

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

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

Vous pouvez C-states le désactiver sous Windows comme suit :

1. Dans PowerShell, obtenez le schéma d'alimentation actif actuel.

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

1. Identifiez le GUID du mode de gestion de l’alimentation.

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

1. Identifiez le GUID du paramètre d’alimentation.

   ```
   (Get-WmiObject -class Win32_PowerSetting -Namespace "root\cimv2\power" -Filter "ElementName='Processor idle disable'").InstanceID                  
   ```

1. Identifiez le GUID du sous-groupe du paramètre d’alimentation.

   ```
   (Get-WmiObject -class Win32_PowerSettingSubgroup -Namespace "root\cimv2\power" -Filter "ElementName='Processor power management'").InstanceID
   ```

1. Désactivez-le en C-states définissant la valeur de l'index sur 1. La valeur 0 indique qu' C-statesils sont désactivés.

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

1. Définissez le mode actif afin de garantir l’enregistrement des paramètres.

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

## Effectuer la comparaison
<a name="perform_benchmarking"></a>

Les procédures suivantes décrivent les commandes de comparaison pour différents types de volume EBS. 

Exécutez les commandes suivantes sur une EBS-optimized instance à laquelle sont attachés des volumes EBS. Si les volumes EBS ont été créés à partir d’instantanés, veillez à les initialiser avant d’effectuer la comparaison. Pour de plus amples informations, veuillez consulter [Initialiser manuellement les volumes après leur création](initalize-volume.md#ebs-initialize).

**Astuce**  
Vous pouvez utiliser les histogrammes de I/O latence fournis par les statistiques de performance détaillées d'EBS pour comparer la distribution des I/O performances dans vos tests d'analyse comparative. Pour de plus amples informations, veuillez consulter [Statistiques de performances détaillées d'Amazon EBS](nvme-detailed-performance-stats.md).

Lorsque vous avez terminé de tester vos volumes, consultez les rubriques suivantes pour obtenir de l'aide sur le nettoyage : [Supprimer un volume Amazon EBS](ebs-deleting-volume.md) et Mettez [fin à votre instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html).

### Définir des points de référence pour les volumes Provisioned IOPS SSD et SSD à usage général
<a name="piops_benchmarking"></a>

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

Exécutez **fio** sur la grappe RAID 0 que vous avez créée.

La commande suivante effectue des opérations d’écriture aléatoires 16 Ko.

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

La commande suivante effectue des opérations de lecture aléatoires 16 Ko.

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

Pour plus d’informations sur l’interprétation des résultats, consultez le didacticiel [Inspecting disk IO performance with fio](https://www.linux.com/training-tutorials/inspecting-disk-io-performance-fio/).

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

Exécutez **DiskSpd** sur le volume que vous avez créé.

La commande suivante exécutera un I/O test aléatoire de 30 secondes à l'aide d'un fichier de test de 20 Go situé sur le `C:` lecteur, avec un ratio d'écriture de 25 % et de lecture de 75 %, et une taille de bloc de 8 Ko. Il utilisera huit threads de travail, chacun avec quatre en suspens I/Os, et une valeur d'entropie d'écriture initiale de 1 Go. Les résultats du test seront enregistrés dans un fichier texte appelé `DiskSpeedResults.txt`. Ces paramètres simulent une charge de travail OLTP SQL Server.

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

Pour plus d’informations sur l’interprétation des résultats, consultez le didacticiel [Inspecting disk IO performance with DiskSPd](https://sqlperformance.com/2015/08/io-subsystem/diskspd-test-storage).

### Benchmark `st1` et `sc1` volumes (instances Linux)
<a name="hdd_benchmarking"></a>

Exécutez la commande **fio** sur votre volume `st1` ou `sc1`.

**Note**  
Avant d'exécuter ces tests, définissez la mise en mémoire tampon I/O sur votre instance comme décrit dans[*Augmentez la lecture anticipée pour les charges de travail à haut débit et en lecture intense sur et (instances Linux uniquement) `st1` `sc1`*](ebs-performance.md#read_ahead). 

La commande suivante exécute des opérations de lecture séquentielle d’1 Mio sur un périphérique de stockage en mode bloc `st1` attaché (par exemple, `/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
```

La commande suivante exécute des opérations d’écriture séquentielle d’1 Mio sur un périphérique de stockage en mode bloc `st1` attaché :

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

Certaines charges de travail exécutent une combinaison de lectures séquentielles et d’écritures séquentielles dans différentes parties du périphérique de stockage en mode bloc. Pour évaluer une telle charge de travail, nous vous recommandons d’utiliser des tâches **fio** distinctes et simultanées pour les lectures et les écritures, et d’utiliser l’option **fio** `offset_increment` pour cibler différents emplacements du périphérique de stockage en mode bloc pour chaque tâche. 

L’exécution de cette charge de travail est un peu plus compliquée qu’une charge de travail d’écriture séquentielle ou de lecture séquentielle. Utilisez un éditeur de texte pour créer un fichier de tâche fio, appelé `fio_rw_mix.cfg` dans cet exemple, contenant les éléments suivants :

```
[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
```

Ensuite, exécutez la commande suivante :

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

Pour plus d'informations sur l'interprétation des résultats, consultez ce didacticiel : [Inspection des I/O performances du disque avec fio](https://www.linux.com/training-tutorials/inspecting-disk-io-performance-fio/).

Plusieurs **fio** tâches directes I/O, même en utilisant des opérations de lecture ou d'écriture séquentielles, peuvent entraîner un débit `st1` et `sc1` des volumes inférieurs aux prévisions. Nous vous recommandons d'utiliser une I/O tâche directe et d'utiliser le `iodepth` paramètre pour contrôler le nombre d' I/O opérations simultanées.