En esta página, se analiza la prueba de rendimiento para 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 para instancias de nivel básico, regional, zonal y Enterprise .
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 Enterprise porque los niveles de servicio de escalamiento horizontal están optimizados para el rendimiento de varias VMs de cliente, y un solo cliente, por lo general, no puede alcanzar las IOPS o la capacidad de procesamiento máximas del clúster.
Para obtener más información, consulta Rendimiento de una o varias VM de cliente.
Antes de comenzar
Activa el recurso 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 aumentar el rendimiento de NFS. Para niveles de servicio específicos, recomendamos especificar la siguiente cantidad de conexiones entre el cliente y el servidor:
| Nivel | Capacidad | Número de conexiones |
|---|---|---|
| Regional, zonal | De 1 a 9.75 TiB | nconnect=2 |
| Regional, zonal | De 10 a 100 TiB | nconnect=7 |
| SSD básico | - | nconnect=7 |
| Enterprise | - | nconnect=2 |
| SSD de escala masiva | - | nconnect=7 |
Puedes optimizar la capacidad de procesamiento de lectura de NFS ajustando el valor del parámetro read_ahead_kb. Para obtener más información, consulta Optimiza 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=writeCapacidad 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=readCapacidad de procesamiento de escritura 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=write --blocksize=1m --iodepth=64 --readwrite=writeIOPS máximas 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=randread --blocksize=4k --iodepth=256 --readwrite=randreadIOPS máximas 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=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite
Prueba el rendimiento con varias VMs de cliente
Para lograr el máximo rendimiento de las instancias zonales, regionales y Enterprise, 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.
Inicia el servidor fio en todas las VMs de cliente. Fio usa el puerto
8765para comunicarse, por lo que este puerto debe estar abierto en tu política de firewall.fio --serverSelecciona una VM de cliente que orquestará 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 EOLCrea un archivo
hosts.listque contenga las direcciones IP o los nombres DNS de las VMs de cliente de fio:cat << EOL > /tmp/hosts.list <Client 1 IP/DNS> <Client 2 IP/DNS> ... <Client N IP/DNS> EOLCrea el siguiente conjunto de datos en un directorio temporal en la VM de 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.confEjecuta 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 de escritura máxima
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.confCuando 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}