Rendimiento de la instancia de prueba

En esta página se explica cómo hacer pruebas de rendimiento de instancias de Filestore.

Información general

Si usas Linux, puedes usar la herramienta Flexible IO Tester (fio) para comparar el rendimiento de lectura, el rendimiento de escritura, las IOPS de lectura y las IOPS de escritura de las instancias de nivel básico, regional, zonal y Enterprise.

Puedes probar el rendimiento de las instancias básicas con una sola VM cliente. No recomendamos usar una sola VM de cliente para probar instancias regionales, zonales o empresariales, ya que los niveles de servicio de escalado horizontal están optimizados para el rendimiento de varias VMs de cliente y, por lo general, un solo cliente no puede alcanzar el máximo de IOPS o de rendimiento del clúster.

Para obtener más información, consulta Rendimiento de una o varias VMs de cliente.

Antes de empezar

Activa el sistema de archivos compartido de Filestore que quieras probar en todas las VMs cliente. Puede ser una o varias VMs de cliente, en función del nivel de servicio. Para obtener instrucciones detalladas y opciones de activación, consulta el artículo Activar sistemas de archivos compartidos en clientes de Compute Engine.

Asegúrate de especificar la opción de montaje nconnect para aumentar el rendimiento de NFS. En el caso de los niveles de servicio específicos, te recomendamos que especifiques el siguiente número de conexiones entre el cliente y el servidor:

Nivel Capacidad Número de conexiones
Regional, zonal 1-9,75 TiB nconnect=2
Regional, zonal 10-100 TiB nconnect=7
Empresa - nconnect=2
SSD de gran escala - nconnect=7

Puedes optimizar el rendimiento de lectura de NFS ajustando el valor del parámetro read_ahead_kb. Para obtener más información, consulta Optimizar el rendimiento de lectura de NFS con el parámetro read_ahead_kb.

Probar el rendimiento con una sola VM cliente

Usa los siguientes casos para realizar pruebas en instancias básicas. Puedes ejecutar los comandos directamente desde la línea de comandos.

  • Rendimiento máximo de escritura de las instancias básicas de menos de 1 TiB:

    fio --ioengine=libaio --filesize=4G --ramp_time=2s
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0
    --group_reporting --directory=/mnt/nfs
    --name=write --blocksize=1m --iodepth=64 --readwrite=write
    
  • Rendimiento máximo de lectura:

    fio --ioengine=libaio --filesize=32G --ramp_time=2s \
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
    --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \
    --name=read --blocksize=1m --iodepth=64 --readwrite=read
    
  • Rendimiento máximo de escritura:

    fio --ioengine=libaio --filesize=32G --ramp_time=2s \
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
    --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \
    --name=write --blocksize=1m --iodepth=64 --readwrite=write
    
  • IOPS de lectura máximas:

    fio --ioengine=libaio --filesize=32G --ramp_time=2s \
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
    --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \
    --name=randread --blocksize=4k --iodepth=256 --readwrite=randread
    
  • IOPS de escritura máximas:

    fio --ioengine=libaio --filesize=32G --ramp_time=2s \
    --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \
    --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \
    --name=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite
    

Probar el rendimiento con varias VMs de cliente

Para conseguir el máximo rendimiento de las instancias zonales, regionales y empresariales, usa varias VMs de cliente.

Recomendamos usar ocho VMs de cliente por cada TiB para instancias de entre 1 y 9,75 TiB. En el caso de las instancias de entre 10 y 100 TiB, usa ocho VMs de cliente por cada 10 TiB.

  1. Inicia el servidor fio en todas las VMs cliente. Fio usa el puerto 8765 para comunicarse, por lo que este puerto debe estar abierto en tu política de cortafuegos.

    fio --server
    
  2. Selecciona una VM cliente que coordine la ejecución de fio. Crea un archivo de trabajo de fio en esa VM cliente:

    cat << EOL > /tmp/fio_job.conf
    [global]
    ioengine=libaio
    ramp_time=2s
    runtime=3m
    time_based
    direct=1
    verify=0
    randrepeat=0
    group_reporting
    buffer_compress_percentage=50
    directory=\${TMP_DIR}
    create_only=\${CREATE_ONLY}
    
    [read-throughput]
    blocksize=1048576
    numjobs=8
    readwrite=read
    filesize=100M
    
    [write-throughput]
    blocksize=1048576
    numjobs=8
    readwrite=write
    filesize=100M
    
    [read-iops]
    blocksize=4k
    iodepth=64
    readwrite=randread
    filesize=1GB
    
    [write-iops]
    blocksize=4k
    iodepth=64
    readwrite=randwrite
    filesize=1GB
    
    EOL
    
  3. Crea un archivo hosts.list que contenga las direcciones IP o los nombres de DNS de las VMs cliente de fio:

    cat << EOL > /tmp/hosts.list
    <Client 1 IP/DNS>
    <Client 2 IP/DNS>
    ...
    <Client N IP/DNS>
    EOL
    
  4. Crea el siguiente conjunto de datos en un directorio temporal de la VM cliente para la que has creado el archivo de trabajo:

    export TMP_DIR=$(mktemp -d MOUNT_POINT_DIRECTORY/XXXXX)
    chmod 777 ${TMP_DIR}
    export CREATE_ONLY=1
    fio --client=/tmp/hosts.list \
    --section=read-throughput --section=read-iops /tmp/fio_job.conf
    
  5. Ejecuta las comparativas con la VM de cliente para la que has creado el archivo de trabajo:

    • Rendimiento máximo de lectura
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf
    
    • Rendimiento máximo de escritura
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=write-throughput /tmp/fio_job.conf
    
    • IOPS de lectura máximas
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=read-iops /tmp/fio_job.conf
    
    • IOPS de escritura máximas
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=write-iops /tmp/fio_job.conf
    
  6. Cuando hayas terminado las pruebas, detén los servidores de fio en todas las VMs cliente y elimina su directorio temporal:

    rm -rf ${TMP_DIR}