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=nvmeExé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
--bsdé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=nvmeUtiliser les types de machines -lssd
Les séries de machines les plus récentes proposent des types de machines
-lssddoté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 demdadminclut 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-recommendsCentOS et RHEL
sudo yum install mdadm -ySLES et openSUSE
sudo zypper install -y mdadmExécutez la commande
findpour identifier tous les disques SSD locaux que vous souhaitez installer ensemble :find /dev/ | grep google-local-nvme-ssdLa 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
findne 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
findsuivante :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
mdadmpour 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-23La 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-idpermet de répertorier les appareils à l'aide des chemins/dev/disk/by-id.sudo mdadm --detail --prefer=by-id /dev/md0La 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
--bsdé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=48 --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=48 --rw=randwrite --blocksize=4k --group_reporting --norandommap
Benchmarking 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.