I limiti di prestazioni degli SSD locali forniti nella sezione Scegli un'opzione di archiviazione sono stati raggiunti utilizzando impostazioni specifiche nell'istanza SSD locale. Se la tua istanza di macchina virtuale (VM) ha difficoltà a raggiungere questi limiti di prestazioni e l'hai già configurata utilizzando le impostazioni consigliate per gli SSD locali, puoi confrontare i tuoi limiti di prestazioni con quelli pubblicati replicando le impostazioni utilizzate dal team di Compute Engine.
Queste istruzioni presuppongono che tu stia utilizzando un sistema operativo Linux con il
gestore dei pacchetti apt installato.
Crea una VM con un dispositivo SSD locale
Il numero di SSD locali che una VM può avere si basa sul tipo di macchina utilizzato per crearla. Per maggiori dettagli, consulta Scegliere un numero valido di SSD locali.
Crea un'istanza SSD locale con quattro o otto vCPU per ogni dispositivo, a seconda del tuo workload.
Ad esempio, il seguente comando crea una VM C3 con 4 vCPU e 1 SSD locale.
gcloud compute instances create c3-ssd-test-instance \ --machine-type "c3-standard-4-lssd"Per i tipi di macchine di seconda generazione e precedenti, specifica il numero di SSD locali da collegare alla VM utilizzando il flag
--local-ssd. Il comando seguente crea una VM N2 con 8 vCPU e 1 SSD locale che utilizza l'interfaccia del disco NVMe:gcloud compute instances create ssd-test-instance \ --machine-type "n2-standard-8" \ --local-ssd interface=nvmeEsegui lo script seguente sulla VM. Lo script replica le impostazioni impiegate per ottenere i dati sulle prestazioni degli SSD forniti nella sezione sul rendimento. Tieni presente che il parametro
--bsdefinisce la dimensione del blocco, che influisce sui risultati per diversi tipi di operazioni di lettura e scrittura.# 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
Crea una VM con il numero massimo di SSD locali
Se vuoi collegare 24 o più dispositivi SSD locali a un'istanza, utilizza un tipo di macchina con almeno 32 vCPU.
I comandi seguenti creano una VM con il numero massimo consentito di dischi SSD locali che utilizzano l'interfaccia NVMe:
Collega l'SSD locale alla 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=nvmeUtilizza i tipi di macchine -lssd
Le serie di macchine più recenti offrono tipi di macchine
-lssddotati di un numero predefinito di dischi SSD locali. Ad esempio, per eseguire il benchmark di una VM con 32 SSD locali (capacità di 12 TiB), utilizza il seguente comando:gcloud compute instances create ssd-test-instance \ --machine-type "c3-standard-176-lssd"Installa lo strumento
mdadm. Il processo di installazione dimdadminclude un prompt all'utente che interrompe gli script, pertanto esegui manualmente il processo:Debian e Ubuntu
sudo apt update && sudo apt install mdadm --no-install-recommendsCentOS e RHEL
sudo yum install mdadm -ySLES e openSUSE
sudo zypper install -y mdadmUtilizza il comando
findper identificare tutte le unità SSD locali che vuoi montare insieme:find /dev/ | grep google-local-nvme-ssdL'output è simile al seguente:
/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
findnon garantisce un ordinamento preciso. I dispositivi possono essere elencati in un altro ordine, ma il numero di righe di output deve corrispondere al numero previsto di partizioni dell'SSD.Se utilizzi dispositivi SCSI, utilizza il seguente comando
find:find /dev/ | grep google-local-ssd
I dispositivi NVMe devono essere tutti nel formato
google-local-nvme-ssd-#e i dispositivi SCSI devono essere tutti nel formatogoogle-local-ssd-#.Utilizza lo strumento
mdadmper combinare più dispositivi SSD locali in un singolo array denominato/dev/md0. L'esempio seguente unisce ventiquattro dispositivi SSD locali che utilizzano l'interfaccia NVMe. Per i dispositivi SSD locali che utilizzano SCSI, utilizza i nomi dei dispositivi restituiti dal comandofindnel passaggio 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 risposta è simile alla seguente:
mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.Puoi verificare i dettagli dell'array con
mdadm --detail. L'aggiunta del flag--prefer=by-idelenca i dispositivi che utilizzano i percorsi/dev/disk/by-id.sudo mdadm --detail --prefer=by-id /dev/md0L'output dovrebbe essere simile a questo per ogni dispositivo dell'array.
... Number Major Minor RaidDevice State 0 259 0 0 active sync /dev/disk/by-id/google-local-nvme-ssd-0 ...Esegui lo script seguente sulla VM. Lo script replica le impostazioni utilizzate per ottenere i dati sulle prestazioni degli SSD forniti nella sezione sul rendimento. Il parametro
--bsdefinisce la dimensione del blocco, che influisce sui risultati per diversi tipi di operazioni di lettura e scrittura.# 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
Eseguire il benchmark delle VM ottimizzate per l'archiviazione
Il benchmark delle VM ottimizzate per l'archiviazione (come la famiglia Z3) deve essere eseguito direttamente sulle partizioni del dispositivo. Puoi ottenere i nomi delle partizioni con
lsblklsblk -o name,size -lpn | grep 2.9T | awk '{print $1}'L'output è simile al seguente:
/dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1 /dev/nvme9n1 /dev/nvme10n1 /dev/nvme11n1 /dev/nvme12n1
Esegui direttamente i benchmark sulle partizioni SSD locali separandole con delimitatori a due punti.
# 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
Passaggi successivi
- Scopri di più sui prezzi degli SSD locali.