Les limites de performances des disques SSD locaux indiquées dans la section Choisir une option de stockage ont été atteintes en utilisant des paramètres spécifiques sur l'instance SSD locale. Si votre instance de machine virtuelle (VM) ne parvient pas à atteindre ces limites de performances alors que vous l'avez configurée à l'aide des paramètres recommandés pour les disques SSD locaux, vous pouvez comparer le niveau de performances que vous atteignez aux limites publiées en répliquant les paramètres utilisés par l'équipe Compute Engine.
Dans ces instructions, nous partons du principe que vous utilisez un système d'exploitation Linux avec le gestionnaire de packages apt
installé.
Créer une VM avec un disque SSD local
Le nombre de disques SSD locaux pouvant être associés à une VM dépend du type de machine que vous utilisez pour créer la VM. Pour plus d'informations, consultez la section Choisir un nombre valide de disques SSD locaux.
Créez une instance SSD locale dotée de quatre ou huit processeurs virtuels pour chaque appareil, en fonction de votre charge de travail.
Par exemple, la commande suivante crée une VM C3 avec quatre processeurs virtuels et un SSD local.
gcloud compute instances create c3-ssd-test-instance \ --machine-type "c3-standard-4-lssd"
Pour les types de machines de deuxième génération et antérieurs, spécifiez le nombre de disques SSD locaux à associer à la VM à l'aide de l'option
--local-ssd
. La commande suivante crée une VM N2 avec huit processeurs virtuels et un SSD local qui utilise l'interface de disque NVMe:gcloud compute instances create ssd-test-instance \ --machine-type "n2-standard-8" \ --local-ssd interface=nvme
Exécutez le script suivant sur votre VM. Ce script réplique les paramètres utilisés pour atteindre les niveaux de performance de disque SSD indiqués dans la section Performances. Notez que le paramètre
--bs
définit la taille de bloc, laquelle a une incidence sur les résultats pour les différents types d'opérations de lecture et d'écriture.# install tools sudo apt-get -y update sudo apt-get install -y fio util-linux # discard Local SSD sectors sudo blkdiscard /dev/disk/by-id/google-local-nvme-ssd-0 # full write pass - measures write bandwidth with 1M blocksize sudo fio --name=writefile \ --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --bs=1M --nrfiles=1 \ --direct=1 --sync=0 --randrepeat=0 --rw=write --end_fsync=1 \ --iodepth=128 --ioengine=libaio # rand read - measures max read IOPS with 4k blocks sudo fio --time_based --name=readbenchmark --runtime=30 --ioengine=libaio \ --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=4 --rw=randread --blocksize=4k --group_reporting # rand write - measures max write IOPS with 4k blocks sudo fio --time_based --name=writebenchmark --runtime=30 --ioengine=libaio \ --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=4 --rw=randwrite --blocksize=4k --group_reporting
Créer une VM avec le nombre maximal de disques SSD locaux
Si vous souhaitez associer 24 disques SSD locaux ou plus à une instance, utilisez un type de machine avec au moins 32 processeurs virtuels.
Les commandes suivantes créent une VM avec le nombre maximal autorisé de disques SSD locaux à l'aide de l'interface NVMe :
Associer un disque SSD local à une VM
gcloud compute instances create ssd-test-instance \ --machine-type "n1-standard-32" \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme \ --local-ssd interface=nvme
Utiliser les types de machines -lssd
Les séries de machines les plus récentes proposent des types de machines
-lssd
dotés d'un nombre prédéterminé de disques SSD locaux. Par exemple, pour évaluer les performances d'une VM dotée de 32 SSD locaux (capacité de 12 Tio), exécutez la commande suivante :gcloud compute instances create ssd-test-instance \ --machine-type "c3-standard-176-lssd"
Installer l'outil
mdadm
. Le processus d'installation demdadm
inclut une invite utilisateur qui interrompt les scripts. Vous devez donc exécuter ce processus manuellement :Debian et Ubuntu
sudo apt update && sudo apt install mdadm --no-install-recommends
CentOS et RHEL
sudo yum install mdadm -y
SLES et openSUSE
sudo zypper install -y mdadm
Exécutez la commande
find
pour identifier tous les disques SSD locaux que vous souhaitez installer ensemble :find /dev/ | grep google-local-nvme-ssd
La sortie ressemble à ceci :
/dev/disk/by-id/google-local-nvme-ssd-23 /dev/disk/by-id/google-local-nvme-ssd-22 /dev/disk/by-id/google-local-nvme-ssd-21 /dev/disk/by-id/google-local-nvme-ssd-20 /dev/disk/by-id/google-local-nvme-ssd-19 /dev/disk/by-id/google-local-nvme-ssd-18 /dev/disk/by-id/google-local-nvme-ssd-17 /dev/disk/by-id/google-local-nvme-ssd-16 /dev/disk/by-id/google-local-nvme-ssd-15 /dev/disk/by-id/google-local-nvme-ssd-14 /dev/disk/by-id/google-local-nvme-ssd-13 /dev/disk/by-id/google-local-nvme-ssd-12 /dev/disk/by-id/google-local-nvme-ssd-11 /dev/disk/by-id/google-local-nvme-ssd-10 /dev/disk/by-id/google-local-nvme-ssd-9 /dev/disk/by-id/google-local-nvme-ssd-8 /dev/disk/by-id/google-local-nvme-ssd-7 /dev/disk/by-id/google-local-nvme-ssd-6 /dev/disk/by-id/google-local-nvme-ssd-5 /dev/disk/by-id/google-local-nvme-ssd-4 /dev/disk/by-id/google-local-nvme-ssd-3 /dev/disk/by-id/google-local-nvme-ssd-2 /dev/disk/by-id/google-local-nvme-ssd-1 /dev/disk/by-id/google-local-nvme-ssd-0
find
ne garantit pas d'ordre particulier. Ce n'est pas un problème si les disques sont répertoriés dans un ordre différent, à condition que le nombre de lignes de sortie corresponde au nombre attendu de partitions SSD.Si vous utilisez des appareils SCSI, utilisez la commande
find
suivante :find /dev/ | grep google-local-ssd
Les appareils NVMe doivent tous être au format
google-local-nvme-ssd-#
, et les appareils SCSI doivent tous être au formatgoogle-local-ssd-#
.Utilisez l'outil
mdadm
pour combiner plusieurs disques SSD locaux dans une baie unique nommée/dev/md0
. Dans l'exemple suivant, vous fusionnez 24 disques SSD locaux qui utilisent l'interface NVMe. Pour les disques SSD locaux qui utilisent SCSI, utilisez les noms renvoyés par la commandefind
à l'étape 3.sudo mdadm --create /dev/md0 --level=0 --raid-devices=24 \ /dev/disk/by-id/google-local-nvme-ssd-0 \ /dev/disk/by-id/google-local-nvme-ssd-1 \ /dev/disk/by-id/google-local-nvme-ssd-2 \ /dev/disk/by-id/google-local-nvme-ssd-3 \ /dev/disk/by-id/google-local-nvme-ssd-4 \ /dev/disk/by-id/google-local-nvme-ssd-5 \ /dev/disk/by-id/google-local-nvme-ssd-6 \ /dev/disk/by-id/google-local-nvme-ssd-7 \ /dev/disk/by-id/google-local-nvme-ssd-8 \ /dev/disk/by-id/google-local-nvme-ssd-9 \ /dev/disk/by-id/google-local-nvme-ssd-10 \ /dev/disk/by-id/google-local-nvme-ssd-11 \ /dev/disk/by-id/google-local-nvme-ssd-12 \ /dev/disk/by-id/google-local-nvme-ssd-13 \ /dev/disk/by-id/google-local-nvme-ssd-14 \ /dev/disk/by-id/google-local-nvme-ssd-15 \ /dev/disk/by-id/google-local-nvme-ssd-16 \ /dev/disk/by-id/google-local-nvme-ssd-17 \ /dev/disk/by-id/google-local-nvme-ssd-18 \ /dev/disk/by-id/google-local-nvme-ssd-19 \ /dev/disk/by-id/google-local-nvme-ssd-20 \ /dev/disk/by-id/google-local-nvme-ssd-21 \ /dev/disk/by-id/google-local-nvme-ssd-22 \ /dev/disk/by-id/google-local-nvme-ssd-23
La réponse est semblable à ce qui suit :
mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
Vous pouvez confirmer les détails du tableau avec
mdadm --detail
. L'ajout de l'option--prefer=by-id
permet de répertorier les appareils à l'aide des chemins/dev/disk/by-id
.sudo mdadm --detail --prefer=by-id /dev/md0
La sortie doit ressembler à ce qui suit pour chaque appareil du tableau.
... Number Major Minor RaidDevice State 0 259 0 0 active sync /dev/disk/by-id/google-local-nvme-ssd-0 ...
Exécutez le script suivant sur votre VM. Ce script réplique les paramètres utilisés pour atteindre les niveaux de performance de disque SSD indiqués dans la section Performances. Notez que le paramètre
--bs
définit la taille de bloc, laquelle a une incidence sur les résultats pour les différents types d'opérations de lecture et d'écriture.# install tools sudo apt-get -y update sudo apt-get install -y fio util-linux # full write pass - measures write bandwidth with 1M blocksize sudo fio --name=writefile \ --filename=/dev/md0 --bs=1M --nrfiles=1 \ --direct=1 --sync=0 --randrepeat=0 --rw=write --end_fsync=1 \ --iodepth=128 --ioengine=libaio # rand read - measures max read IOPS with 4k blocks sudo fio --time_based --name=benchmark --runtime=30 \ --filename=/dev/md0 --ioengine=libaio --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=32 --rw=randread --blocksize=4k --group_reporting --norandommap # rand write - measures max write IOPS with 4k blocks sudo fio --time_based --name=benchmark --runtime=30 \ --filename=/dev/md0 --ioengine=libaio --randrepeat=0 \ --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \ --numjobs=32 --rw=randwrite --blocksize=4k --group_reporting --norandommap
Effectuer une analyse comparative des VM optimisées pour le stockage
Les VM optimisées pour le stockage (telles que la famille Z3) doivent être comparées directement aux partitions d'appareils. Vous pouvez obtenir les noms de partition avec la commande
lsblk
.lsblk -o name,size -lpn | grep 2.9T | awk '{print $1}'
La sortie ressemble à ceci :
/dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1 /dev/nvme9n1 /dev/nvme10n1 /dev/nvme11n1 /dev/nvme12n1
Exécutez directement les analyses comparatives sur les partitions des disques SSD locaux en les séparant par des délimiteurs de deux-points.
# install benchmarking tools sudo apt-get -y update sudo apt-get install -y fio util-linux # Full Write Pass. # SOVM achieves max read performance on previously written/discarded ranges. sudo fio --readwrite=write --blocksize=1m --iodepth=4 --ioengine=libaio \ --direct=1 --group_reporting \ --name=job1 --filename=/dev/nvme1n1 --name=job2 --filename=/dev/nvme2n1 \ --name=job3 --filename=/dev/nvme3n1 --name=job4 --filename=/dev/nvme4n1 \ --name=job5 --filename=/dev/nvme5n1 --name=job6 --filename=/dev/nvme6n1 \ --name=job7 --filename=/dev/nvme7n1 --name=job8 --filename=/dev/nvme8n1 \ --name=job9 --filename=/dev/nvme9n1 --name=job10 --filename=/dev/nvme10n1 \ --name=job11 --filename=/dev/nvme11n1 --name=job12 --filename=/dev/nvme12n1 # rand read - measures max read IOPS with 4k blocks sudo fio --readwrite=randread --blocksize=4k --iodepth=128 \ --numjobs=4 --direct=1 --runtime=30 --group_reporting --ioengine=libaio \ --name=job1 --filename=/dev/nvme1n1 --name=job2 --filename=/dev/nvme2n1 \ --name=job3 --filename=/dev/nvme3n1 --name=job4 --filename=/dev/nvme4n1 \ --name=job5 --filename=/dev/nvme5n1 --name=job6 --filename=/dev/nvme6n1 \ --name=job7 --filename=/dev/nvme7n1 --name=job8 --filename=/dev/nvme8n1 \ --name=job9 --filename=/dev/nvme9n1 --name=job10 --filename=/dev/nvme10n1 \ --name=job11 --filename=/dev/nvme11n1 --name=job12 --filename=/dev/nvme12n1 # rand write - measures max write IOPS with 4k blocks sudo fio --readwrite=randwrite --blocksize=4k --iodepth=128 \ --numjobs=4 --direct=1 --runtime=30 --group_reporting --ioengine=libaio \ --name=job1 --filename=/dev/nvme1n1 --name=job2 --filename=/dev/nvme2n1 \ --name=job3 --filename=/dev/nvme3n1 --name=job4 --filename=/dev/nvme4n1 \ --name=job5 --filename=/dev/nvme5n1 --name=job6 --filename=/dev/nvme6n1 \ --name=job7 --filename=/dev/nvme7n1 --name=job8 --filename=/dev/nvme8n1 \ --name=job9 --filename=/dev/nvme9n1 --name=job10 --filename=/dev/nvme10n1 \ --name=job11 --filename=/dev/nvme11n1 --name=job12 --filename=/dev/nvme12n1
Étapes suivantes
- Découvrez les tarifs des disques SSD locaux.