I limiti delle prestazioni degli SSD locali forniti in Scegliere una sezione per le opzioni di archiviazione sono stati ottenuti usando impostazioni specifiche sull'istanza SSD locale. Se le tue l'istanza di macchina virtuale (VM) non riesce a raggiungere queste prestazioni limiti e l'istanza è già configurata utilizzando lo strumento Impostazioni SSD, puoi Confronta i limiti delle prestazioni con i limiti pubblicati replicando utilizzate dal team di Compute Engine.
Queste istruzioni presuppongono che tu stia utilizzando un sistema operativo Linux con
Gestore di pacchetti apt
installato.
Creare una VM con un dispositivo SSD locale
Il numero di SSD locali che una VM può avere si basa sul che usi per creare la VM. Per maggiori dettagli, vedi Scegli un numero valido di SSD locali.
Crea un'istanza SSD locale con quattro o otto vCPU per ogni dispositivo. a seconda del carico di lavoro.
Ad esempio, il comando seguente 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 macchina di seconda generazione e precedenti, specifica il numero dell'SSD locale da collegare alla VM utilizzando il flag
--local-ssd
. Le seguenti crea una VM N2 con 8 vCPU e 1 SSD locale che utilizza il disco NVMe dell'interfaccia:gcloud compute instances create ssd-test-instance \ --machine-type "n2-standard-8" \ --local-ssd interface=nvme
Esegui lo script seguente sulla tua VM. Lo script replica le impostazioni utilizzati per ottenere i dati delle prestazioni SSD forniti sezione sul rendimento. Nota definito dal parametro
--bs
la dimensione del blocco, che influisce sui risultati per diversi tipi di operazioni di 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 32 o più vCPU.
I comandi seguenti creano una VM con il numero massimo consentito di Dischi SSD locali utilizzando l'interfaccia NVMe:
Collega 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=nvme
Utilizza tipi di macchina -lssd
Le serie di macchine più recenti offrono
-lssd
tipi di macchina con un di dischi SSD locali. Ad esempio, per confrontare su 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 dimdadm
include un prompt utente che interrompe gli script, quindi esegui manualmente:Debian e Ubuntu
sudo apt update && sudo apt install mdadm --no-install-recommends
CentOS e RHEL
sudo yum install mdadm -y
SLES e openSUSE
sudo zypper install -y mdadm
Utilizza il comando
find
per identificare tutte le unità SSD locali che ti interessano. da montare insieme:find /dev/ | grep google-local-nvme-ssd
L'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
find
non garantisce che verrà effettuato un ordine. Va bene se i dispositivi sono elencate in un ordine diverso purché il numero di righe di output corrisponda al numero previsto di partizioni SSD.Se utilizzi dispositivi SCSI, usa il seguente comando
find
:find /dev/ | grep google-local-ssd
I dispositivi NVMe devono tutti avere il formato
google-local-nvme-ssd-#
, mentre i dispositivi SCSI devono essere tutti nel formatogoogle-local-ssd-#
.Utilizza lo strumento
mdadm
per combinare più dispositivi SSD locali in un singolo array denominato/dev/md0
. L'esempio seguente unisce venti quattro dispositivi SSD locali che usano l'interfaccia NVMe. Per i dispositivi SSD locali che utilizzano SCSI, usano i nomi dei dispositivi restituiti dal comandofind
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-23
La risposta è simile alla seguente:
mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
Puoi confermare i dettagli dell'array con
mdadm --detail
. Aggiunta in corso... Il flag--prefer=by-id
elencherà i dispositivi utilizzando i percorsi/dev/disk/by-id
.sudo mdadm --detail --prefer=by-id /dev/md0
L'output dovrebbe essere simile al seguente per ogni dispositivo nell'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 tua VM. Lo script replica le impostazioni utilizzati per ottenere i dati delle prestazioni SSD forniti sezione sul rendimento. definito dal parametro
--bs
la dimensione del blocco, che influisce sui risultati per diversi tipi di operazioni di 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=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
Benchmarking di VM ottimizzate per l'archiviazione
Le VM ottimizzate per lo spazio di archiviazione (come la famiglia Z3) devono essere confrontate direttamente con le partizioni del dispositivo. Puoi ottenere i nomi delle partizioni con
lsblk
lsblk -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 rispetto alle partizioni SSD locali, separandole con i delimitatori di 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.