Cómo probar el rendimiento de la instancia

En esta página, se analizan las pruebas de rendimiento de las instancias de Filestore.

Descripción general

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

Puedes probar el rendimiento de las instancias básicas con una sola VM de cliente. No recomendamos usar una sola VM de cliente para probar instancias regionales, zonales o empresariales, ya que los niveles de servicio de escalamiento horizontal están optimizados para el rendimiento de varias VMs de cliente y un solo cliente no suele poder alcanzar la IOPS o la capacidad de procesamiento máximas del clúster.

Para obtener más información, consulta Rendimiento de una sola VM de cliente y de varias.

Antes de comenzar

Activa el archivo compartido de Filestore que deseas probar en todas las VMs de cliente. Puede ser una o varias VMs de cliente, según el nivel de servicio. Para obtener instrucciones detalladas y opciones de activación, consulta Activa los archivos compartidos en clientes de Compute Engine.

Asegúrate de especificar la opción de activación nconnect para mejorar el rendimiento de NFS. Para niveles de servicio específicos, te recomendamos que especifiques la siguiente cantidad de conexiones entre el cliente y el servidor:

Nivel Capacidad Número de conexiones
Regional o zonal De 1 a 9.75 TiB nconnect=2
Regional o zonal De 10 a 100 TiB nconnect=7
Enterprise - nconnect=2
SSD de escala masiva - nconnect=7

Para optimizar la capacidad de procesamiento de lectura de NFS, ajusta el valor del parámetro read_ahead_kb. Para obtener más información, consulta Cómo optimizar la capacidad de procesamiento de lectura de NFS con el parámetro read_ahead_kb.

Prueba el rendimiento con una sola VM de cliente

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

  • Capacidad máxima de procesamiento de escritura para 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
    
  • Capacidad de procesamiento de lectura máxima:

    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
    
  • Capacidad de procesamiento máxima 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
    

Prueba el rendimiento con varias VMs de cliente

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

Recomendamos usar ocho VMs de cliente por cada 1 TiB para instancias de entre 1 y 9.75 TiB. Para 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 del cliente. Fio usa el puerto 8765 para comunicarse, por lo que este puerto debe estar abierto en la política de firewall.

    fio --server
    
  2. Selecciona una VM cliente que orqueste la ejecución de fio. Crea un archivo de trabajo de fio en esa VM de 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 en la VM del cliente para la que creaste 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 comparativas con la VM de cliente para la que creaste el archivo de trabajo:

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

    rm -rf ${TMP_DIR}