Optimiza y prueba el rendimiento de las instancias

En esta página, se describe el rendimiento promedio esperado y la configuración de rendimiento recomendada para Filestore. También se muestra cómo puedes probar el rendimiento de tus instancias de Filestore.

Rendimiento esperado

Cada nivel de servicio de Filestore proporciona un nivel diferente de rendimiento. El rendimiento de cualquier instancia puede variar respecto de los números esperados debido a varios factores, como el uso del almacenamiento en caché, la cantidad de VM de cliente, el tipo de máquina de las VM del cliente y la carga de trabajo probada.

En las siguientes tablas, se muestra el rendimiento esperado de las instancias de Filestore según su nivel de servicio y la capacidad configurada:

Rendimiento Capacidad IOPS de lectura y escritura Capacidad de procesamiento de lectura y escritura (MiB/s)
BASIC_HDD 1 TiB a 10 TiB 600/1,000 100/100
BASIC_HDD De 10 TiB a 63.9 TiB 1,000/5,000 180/120
BASIC_SSD De 2.5 TiB a 63.9 TiB 60,000/25,000 1,200/350
ZONAL (zonal, rango de capacidad baja) 1 TiB 9.200/2.600 260/88
ZONAL (zonal, rango de capacidad baja) 9.75 TiB 89.700/25.350 2.535 de 858
HIGH_SCALE_SSD (ahora zonal, rango de capacidad alto) 10 TiB 92,000/26,000 2,600/880
HIGH_SCALE_SSD (ahora zonal, rango de capacidad alto) 100 TiB 920,000/260,000 26,000/8,800
ENTERPRISE 1 TiB 12,000/4,000 120/100
ENTERPRISE 10 TiB 120,000/40,000 1,200/1,000

En la tabla anterior, se muestra el rendimiento esperado con la capacidad mínima y máxima para cada nivel de servicio. Entre estos límites, el rendimiento se escala de forma lineal a medida que el escala de capacidad. Por ejemplo, si duplicas la capacidad de tu instancia empresarial de 1 TiB a 2 TiB, el rendimiento esperado de la instancia se duplica de 12,000/4,000 IOPS de lectura y escritura a 24,000/8,000 IOPS de lectura y escritura.

En situaciones de uno o pocos clientes, debes aumentar la cantidad de conexiones de TCP con la opción de activación nconnect para lograr el rendimiento máximo de NFS. Recomendamos especificar hasta 7 conexiones para el nivel de servicio zonal y hasta 2 para el nivel empresarial. En general, cuanto mayor sea la capacidad de archivos compartidos y menos conexiones de VMs del cliente, más rendimiento obtendrás si especificas conexiones adicionales con nconnect.

Tipo recomendado de máquina cliente

Recomendamos tener un tipo de máquina de Compute Engine, como n2-standard-8, que proporcione un ancho de banda de salida de 16 Gbps. Este ancho de banda de salida permite que el cliente alcance un ancho de banda de lectura de aproximadamente 16 Gbps para cargas de trabajo compatibles con la caché. Para obtener más contexto, consulta Ancho de banda de red.

Opciones de activación de cliente de Linux

Recomendamos usar las siguientes opciones de activación de NFS, en especial, la activación hard, async y las opciones rsize y wsize, para lograr el mejor rendimiento en las instancias de VM de clientes de Linux. Para obtener más información sobre las opciones de activación de NFS, consulta nfs.

Opción predeterminada Descripción
hard El cliente de NFS reintenta las solicitudes NFS indefinidamente.
timeo=600 El cliente de NFS espera 600 decisegundos (60 segundos) antes de volver a intentar una solicitud NFS.
retrans=3 El cliente de NFS intenta las solicitudes NFS tres veces antes de tomar más medidas de recuperación.
rsize=262144 El cliente NFS puede recibir un máximo de 262,144 bytes del servidor NFS por cada solicitud READ.
Nota: Para instancias de nivel básico, establece el valor rsize en 1048576.
wsize=1048576 El cliente NFS puede enviar un máximo de 1,048,576 bytes (1 MiB) al servidor NFS por cada solicitud WRITE.
resvport El cliente de NFS utiliza un puerto de origen privilegiado cuando se comunica con el servidor NFS de este punto de activación.
async El cliente de NFS retrasa el envío de escrituras de la aplicación al servidor NFS hasta que se cumplen determinadas condiciones.
Precaución: Usar la opción sync reduce significativamente el rendimiento.

Rendimiento de VM de un solo cliente o de varios clientes

Los niveles de servicio escalables de Filestore están optimizados para el rendimiento de varias VM de cliente, no para una sola VM de cliente.

En el caso de las instancias de enterprise- y zonal, se necesitan al menos cuatro VM de cliente para aprovechar el rendimiento completo. Esto garantiza que todas las VM del clúster de Filestore subyacente se usen por completo.

Para obtener más contexto, el clúster de Filestore escalable más pequeño tiene cuatro VM. Cada VM del cliente se comunica con una sola VM del clúster de Filestore, sin importar la cantidad de conexiones NFS por cliente especificada mediante la opción de activación nconnect. Si usas una sola VM de cliente, las operaciones de lectura y escritura se realizan solo desde una única VM de clúster de Filestore.

Mejora el rendimiento en todos los recursos de Google Cloud

Las operaciones en varios recursos de Google Cloud, como la copia de datos de Cloud Storage a una instancia de Filestore mediante gsutil, pueden ser lentas. Para ayudar a mitigar los problemas de rendimiento, prueba lo siguiente:

  • Asegúrate de que el bucket de Cloud Storage, la VM del cliente y la instancia de Filestore residan en la misma región.

    Las regiones dobles proporcionan una opción con el máximo rendimiento para los datos almacenados en Cloud Storage. Si usas esta opción, asegúrate de que los otros recursos residan en una de las regiones individuales que se encuentran en la región doble. Por ejemplo, si los datos de Cloud Storage residen en us-central1,us-west1, asegúrate de que la VM del cliente y la instancia de Filestore residan en us-central1.

  • Como punto de referencia, verifica el rendimiento de una VM conectada a un PD y compara el rendimiento de una instancia de Filestore.

    • Si la VM conectada con PD tiene un rendimiento similar o más lento en comparación con la instancia de Filestore, esto podría indicar un cuello de botella de rendimiento no relacionado con Filestore. Prueba lo siguiente para mejorar el rendimiento del modelo de referencia de los recursos que no son de Filestore:

      • Aplica la opción gsutil -m. Esta opción permite que las operaciones admitidas, incluidas cp, mv y rsync, se ejecuten en paralelo.

      • Aplica los siguientes parámetros de configuración de gsutil. Cada uno es un valor de configuración de boto mutable establecido en el archivo de configuración boto. Los usuarios pueden modificar el archivo directamente (recomendado) o con la opción -o:

    • Si el rendimiento de la instancia de Filestore es mucho más lento que el de la VM conectada a un PD, intenta distribuir la operación en varias VM.

      • Esto ayuda a mejorar el rendimiento de las operaciones de lectura desde Cloud Storage.

      • En el caso de las instancias de enterprise- y zonal, se necesitan al menos cuatro VM de cliente para aprovechar un rendimiento completo. Esto garantiza que todas las VM del clúster de Filestore subyacente se usen por completo. Para obtener más información, consulta Rendimiento de VM de un solo cliente y de varios clientes.

Prueba el rendimiento

Si usas Linux, puedes utilizar la herramienta fio para comparar la capacidad de procesamiento de lectura y escritura y las IOPS de las instancias de nivel básico. Ten en cuenta que este método para comparar el rendimiento no se recomienda en instancias de nivel empresarial ni zonal.

En los ejemplos de esta sección, se muestran comparativas comunes que puedes ejecutar. Te recomendamos ejecutar fio desde varias instancias de VM de cliente para lograr un rendimiento máximo.

En el siguiente ejemplo, se compara la capacidad 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  \
--name=write --blocksize=1m --iodepth=64 --readwrite=write

En el siguiente ejemplo, se comparan las IOPS 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  \
--name=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite

En el siguiente ejemplo, se compara la 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  \
--name=read --blocksize=1m --iodepth=64 --readwrite=read

En el siguiente ejemplo, se comparan las IOPS 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  \
--name=randread --blocksize=4k --iodepth=256 --readwrite=randread

¿Qué sigue?