Compara el rendimiento de los SSD locales

Los límites de rendimiento del SSD local que se proporcionan en la sección Elige una opción de almacenamiento se obtuvieron mediante una configuración específica en la instancia de SSD local. Si tu instancia de máquina virtual (VM) tiene problemas para alcanzar estos límites de rendimiento y ya la configuraste mediante la configuración de SSD local recomendada, puedes hacer lo siguiente: compara los límites del rendimiento con los límites publicados. Para ello, replica la configuración que usa el equipo de Compute Engine.

En estas instrucciones, se supone que usas un sistema operativo Linux con el administrador de paquetes apt instalado.

Crea una máquina virtual con 8 CPU virtuales y una partición de SSD local

  1. Crea una instancia de SSD local con cuatro o con ocho CPU virtuales para cada dispositivo, según la carga de trabajo. Por ejemplo, si deseas adjuntar cuatro particiones de SSD locales a una instancia, usa un tipo de máquina con 16 o 32 CPU virtuales.

    Con el siguiente comando, se crea una máquina virtual con 8 CPU virtuales y un único SSD local:

    gcloud compute instances create ssd-test-instance \
        --machine-type "n1-standard-8" \
        --local-ssd interface=nvme
    
  2. Ejecuta la siguiente secuencia de comandos en tu VM. La secuencia de comandos replica la configuración que se usó para alcanzar las cifras de rendimiento del SSD proporcionadas en la sección sobre rendimiento. Ten en cuenta que el parámetro --bs define el tamaño del bloque, el cual afecta los resultados para los 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 --size=100G --filesize=100G \
    --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --bs=1M --nrfiles=1 \
    --direct=1 --sync=0 --randrepeat=0 --rw=write --refill_buffers --end_fsync=1 \
    --iodepth=200 --ioengine=libaio
    
    # rand read - measures max read IOPS with 4k blocks
    sudo fio --time_based --name=benchmark --size=100G --runtime=30 \
    --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --ioengine=libaio --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=benchmark --size=100G --runtime=30 \
    --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --ioengine=libaio --randrepeat=0 \
    --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
    --numjobs=4 --rw=randwrite --blocksize=4k --group_reporting
    

Crea una máquina virtual con 32 CPU virtuales y 24 particiones de SSD locales

  1. Si quieres adjuntar 24 particiones de SSD locales a una instancia, usa un tipo de máquina con 32 CPU virtuales o más.

    El siguiente comando crea una máquina virtual con 32 CPU virtuales y 24 particiones de SSD locales:

    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
    
  2. Instala la herramienta de mdadm. El proceso de instalación para mdadm incluye una solicitud de usuario que detiene las secuencias de comandos, por lo tanto, debes ejecutar el proceso de forma manual.

    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
    
  3. Usa el comando lsblk para identificar todos los SSD locales que quieras activar juntos:

    lsblk
    

    El resultado es similar al siguiente:

    NAME    MAJ:MIN  RM  SIZE RO TYPE MOUNTPOINT
    sda       8:0     0   10G  0 disk
    └─sda1    8:1     0   10G  0 part /
    nvme0n1 259:0     0  375G  0 disk
    nvme0n2 259:1     0  375G  0 disk
    nvme0n3 259:2     0  375G  0 disk
    nvme0n4 259:3     0  375G  0 disk
    nvme0n5 259:4     0  375G  0 disk
    nvme0n6 259:5     0  375G  0 disk
    nvme0n7 259:6     0  375G  0 disk
    nvme0n8 259:7     0  375G  0 disk
    nvme0n9 259:8     0  375G  0 disk
    nvme0n10 259:9    0  375G  0 disk
    nvme0n11 259:10   0  375G  0 disk
    nvme0n12 259:11   0  375G  0 disk
    nvme0n13 259:12   0  375G  0 disk
    nvme0n14 259:13   0  375G  0 disk
    nvme0n15 259:14   0  375G  0 disk
    nvme0n16 259:15   0  375G  0 disk
    nvme0n17 259:16   0  375G  0 disk
    nvme0n18 259:17   0  375G  0 disk
    nvme0n19 259:18   0  375G  0 disk
    nvme0n20 259:19   0  375G  0 disk
    nvme0n21 259:20   0  375G  0 disk
    nvme0n22 259:21   0  375G  0 disk
    nvme0n23 259:22   0  375G  0 disk
    nvme0n24 259:23   0  375G  0 disk
    

    Los SSD locales en modo SCSI tienen nombres estándar similares a sdb. Los SSD locales en modo NVMe tienen nombres similares a nvme0n1.

  4. Usa la herramienta de mdadm para combinar varios dispositivos SSD locales en un solo array llamado /dev/md0. En este ejemplo, se combinan veinticuatro dispositivos SSD locales en modo NVMe. Para dispositivos SSD locales en modo SCSI, especifica los nombres que obtuviste del comando lsblk:

    sudo mdadm --create /dev/md0 --level=0 --raid-devices=24 \
    /dev/nvme0n1 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4 \
    /dev/nvme0n5 /dev/nvme0n6 /dev/nvme0n7 /dev/nvme0n8 \
    /dev/nvme0n9 /dev/nvme0n10 /dev/nvme0n11 /dev/nvme0n12 \
    /dev/nvme0n13 /dev/nvme0n14 /dev/nvme0n15 /dev/nvme0n16 \
    /dev/nvme0n17 /dev/nvme0n18 /dev/nvme0n19 /dev/nvme0n20 \
    /dev/nvme0n21 /dev/nvme0n22 /dev/nvme0n23 /dev/nvme0n24
    

    La respuesta es similar al ejemplo a continuación:

    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md0 started.
    
  5. Ejecuta la siguiente secuencia de comandos en tu VM. La secuencia de comandos replica la configuración que se usó para alcanzar las cifras de rendimiento del SSD proporcionadas en la sección sobre rendimiento. Ten en cuenta que el parámetro --bs define el tamaño de bloque, que afecta los resultados para los 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 --size=100G --filesize=100G \
    --filename=/dev/md0 --bs=1M --nrfiles=1 \
    --direct=1 --sync=0 --randrepeat=0 --rw=write --refill_buffers --end_fsync=1 \
    --iodepth=200 --ioengine=libaio
    
    # rand read - measures max read IOPS with 4k blocks
    sudo fio --time_based --name=benchmark --size=100G --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 --size=100G --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
    

¿Qué sigue?