Los límites de rendimiento de SSD local proporcionados en la sección Elegir una opción de almacenamiento se lograron mediante el uso de configuraciones específicas en la instancia de SSD local. Si la instancia de su máquina virtual (VM) tiene problemas para alcanzar estos límites de rendimiento y ya configuró la instancia usando la configuración SSD local recomendada , puede comparar sus límites de rendimiento con los límites publicados replicando la configuración utilizada por el equipo de Compute Engine.
Estas instrucciones asumen que está utilizando un sistema operativo Linux con el administrador de paquetes apt
instalado.
Cree una máquina virtual con un dispositivo SSD local
La cantidad de SSD locales que puede tener una VM se basa en el tipo de máquina que utiliza para crear la VM. Para obtener más información, consulte Elegir una cantidad válida de SSD locales .
Cree una instancia de SSD local que tenga cuatro u ocho vCPU para cada dispositivo, según su carga de trabajo.
Por ejemplo, el siguiente comando crea una máquina virtual C3 con 4 vCPU y 1 SSD local.
gcloud compute instances create c3-ssd-test-instance \ --machine-type "c3-standard-4-lssd"
Para tipos de máquinas de segunda generación y anteriores, especifique la cantidad de SSD locales que se conectarán a la máquina virtual mediante el indicador
--local-ssd
. El siguiente comando crea una máquina virtual N2 con 8 vCPU y 1 SSD local que utiliza la interfaz de disco NVMe:gcloud compute instances create ssd-test-instance \ --machine-type "n2-standard-8" \ --local-ssd interface=nvme
Ejecute el siguiente script en su VM. El script replica la configuración utilizada para lograr las cifras de rendimiento de SSD proporcionadas en la sección de rendimiento . Tenga en cuenta que el parámetro
--bs
define el tamaño del bloque, lo que afecta los resultados de diferentes tipos de operaciones de lectura y escritura.# 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
Cree una VM con la cantidad máxima de SSD locales
Si desea conectar 24 o más dispositivos SSD locales a una instancia, utilice un tipo de máquina con 32 o más vCPU.
Los siguientes comandos crean una máquina virtual con la cantidad máxima permitida de discos SSD locales mediante la interfaz NVMe:
Adjuntar SSD local a 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
Utilice tipos de máquinas -lssd
Las series de máquinas más nuevas ofrecen tipos de máquinas
-lssd
que vienen con una cantidad predeterminada de discos SSD locales. Por ejemplo, para comparar una máquina virtual con 32 SSD locales (capacidad de 12 TiB), use el siguiente comando:gcloud compute instances create ssd-test-instance \ --machine-type "c3-standard-176-lssd"
Instale la herramienta
mdadm
. El proceso de instalación demdadm
incluye un mensaje de usuario que detiene los scripts, así que ejecute el proceso manualmente:Debian y Ubuntu
sudo apt update && sudo apt install mdadm --no-install-recommends
CentOS y RHEL
sudo yum install mdadm -y
SLES y openSUSE
sudo zypper install -y mdadm
Utilice el comando
find
para identificar todos los SSD locales que desea montar juntos:find /dev/ | grep google-local-nvme-ssd
El resultado es similar al siguiente:
/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
no garantiza un pedido. Está bien si los dispositivos aparecen en un orden diferente, siempre y cuando el número de líneas de salida coincida con el número esperado de particiones SSD.Si utiliza dispositivos SCSI, utilice el siguiente comando
find
:find /dev/ | grep google-local-ssd
Todos los dispositivos NVMe deben tener el formato
google-local-nvme-ssd-#
y los dispositivos SCSI deben tener el formatogoogle-local-ssd-#
.Utilice la herramienta
mdadm
para combinar varios dispositivos SSD locales en una única matriz denominada/dev/md0
. El siguiente ejemplo combina veinticuatro dispositivos SSD locales que utilizan la interfaz NVMe. Para dispositivos SSD locales que usan SCSI, use los nombres de dispositivo devueltos por el comandofind
en el paso 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 respuesta es similar a la siguiente:
mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.
Puede confirmar los detalles de la matriz con
mdadm --detail
. Agregar el indicador--prefer=by-id
enumerará los dispositivos que utilizan las rutas/dev/disk/by-id
.sudo mdadm --detail --prefer=by-id /dev/md0
El resultado debería ser similar al siguiente para cada dispositivo de la matriz.
... Number Major Minor RaidDevice State 0 259 0 0 active sync /dev/disk/by-id/google-local-nvme-ssd-0 ...
Ejecute el siguiente script en su VM. El script replica la configuración utilizada para lograr las cifras de rendimiento de SSD proporcionadas en la sección de rendimiento . que el parámetro
--bs
define el tamaño del bloque, lo que afecta los resultados para diferentes tipos de operaciones de lectura y escritura.# 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
Evaluación comparativa de máquinas virtuales optimizadas para almacenamiento
Las máquinas virtuales optimizadas para almacenamiento (como la familia Z3) deben compararse directamente con las particiones del dispositivo. Puedes obtener los nombres de las particiones con
lsblk
lsblk -o name,size -lpn | grep 2.9T | awk '{print $1}'
El resultado es similar al siguiente:
/dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1 /dev/nvme9n1 /dev/nvme10n1 /dev/nvme11n1 /dev/nvme12n1
Ejecute directamente los puntos de referencia contra las particiones SSD locales separándolas con delimitadores de dos puntos.
# 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
¿Qué sigue?
- Obtenga más información sobre los precios de SSD locales .