En esta página, se describe el rendimiento de Cloud Storage FUSE en términos de latencia, ancho de banda y reintentos, así como las prácticas recomendadas cuando se usa Cloud Storage FUSE.
Lecturas y escrituras
Cloud Storage FUSE funciona mejor para las cargas de trabajo de lectura y escritura secuenciales que las cargas de trabajo de lectura y escritura aleatorias. Cloud Storage FUSE usa una heurística para detectar cuándo se lee un archivo de forma secuencial, lo que permite que Cloud Storage FUSE emita menos solicitudes de lectura más grandes a Cloud Storage con la misma conexión TCP.
Para optimizar el rendimiento de lectura secuencial, se recomienda que subas y leas archivos de 5 MB a 200 MB de tamaño. Para optimizar el rendimiento de lectura aleatoria, se recomienda subir y leer archivos de 2 MB aproximadamente.
Almacenamiento en caché
El uso de Cloud Storage FUSE con archivos, estadísticas, tipo o los tres tipos de caché habilitados puede aumentar el rendimiento y reducir los costos, pero también puede reducir la coherencia.
Caché de estadísticas y tipo
Las cachés de estadísticas y tipos pueden reducir la cantidad de llamadas en serie a Cloud Storage en lecturas repetidas al mismo archivo, lo que mejora el rendimiento. Configura las cachés de estadísticas y tipos según la cantidad de archivos que tengan lecturas repetidas y podrían beneficiarse del almacenamiento en caché. Puedes usar la cantidad de archivos para representar el tamaño aproximado de la caché. Recomendamos los siguientes límites para cada tipo de caché:
stat-cache-max-size-mb
: usa el valor predeterminado de32
si tu carga de trabajo incluye hasta 20,000 archivos. Si tu carga de trabajo supera los 20,000 archivos, aumenta el valorstat-cache-max-size-mb
en 10 por cada 6,000 archivos adicionales, alrededor de 1,500 bytes por archivo.stat-cache-max-size-mb
es un límite de nivel de activación y el uso de memoria real puede ser menor que el valor que especifiques. Como alternativa, puedes configurarstat-cache-max-size-mb
como-1
para permitir que la caché de estadísticas use tanta memoria como sea necesario.type-cache-max-size-mb
: Usa el valor predeterminado de4
si la cantidad máxima de archivos dentro de un solo directorio del bucket que activas contiene 20,000 archivos o menos. Si la cantidad máxima de archivos dentro de un solo directorio que activas contiene más de 20,000 archivos, aumenta el valortype-cache-max-size-mb
por1
por cada 5,000 archivos, alrededor de 200 bytes. por archivo.type-cache-max-size-mb
es un límite de nivel de activación y el uso de memoria real puede ser menor que el valor especificado. Como alternativa, puedes establecer el valortype-cache-max-size-mb
en-1
para permitir que el tipo de caché use tanta memoria como sea necesario.
Te recomendamos que ejecutes una lista completa. Para ello, pasa ls -R
en tu bucket activado antes de ejecutar la carga de trabajo para mejorar el rendimiento en la primera ejecución. Para ello, propaga la caché de tipo con anticipación en un método por lotes más rápido.
Prácticas recomendadas para el almacenamiento en caché de archivos
Asegúrate de que todo tu conjunto de datos se ajuste a la capacidad de caché para obtener el mejor rendimiento y evitar la hiperpaginación de caché. Además, considera la capacidad y el rendimiento máximos que pueden proporcionar tus medios de caché. Si alcanzaste el rendimiento máximo de la caché aprovisionada, el límite de capacidad o ambos, es beneficioso leer directamente desde Cloud Storage, que tiene límites mucho más altos que Cloud Storage FUSE.
IOPS (búsquedas por segundo)
Filestore es una mejor opción que Cloud Storage FUSE para cargas de trabajo que requieren altas operaciones de entrada y salida instantáneas por segundo (IOPS), también conocidas como “búsquedas por segundo” en Cloud Storage. Filestore también es la mejor opción para IOPS muy altas en un solo sistema de archivos y con menor latencia.
Como alternativa, también puedes usar la función de caché de archivos de Cloud Storage FUSE para compilar en función de las características de rendimiento del medio de caché subyacente si proporciona IOPS altas y baja latencia.
Latencia y capacidad de procesamiento
Cloud Storage FUSE tiene una latencia más alta que un sistema de archivos local. La capacidad de procesamiento se reduce cuando lees o escribes archivos pequeños de a uno, ya que genera varias llamadas a la API separadas. Leer o escribir varios archivos grandes a la vez puede ayudar a aumentar la capacidad de procesamiento. Usa la función de caché de archivos de Cloud Storage FUSE para mejorar el rendimiento de E/S pequeñas y aleatorias.
La latencia del sistema de archivos de Cloud Storage FUSE afecta a rsync
, que lee y escribe solo
un archivo a la vez. Para transferir varios archivos hacia o desde tu bucket en
paralelo, usa Google Cloud CLI a través de la ejecución de gcloud storage rsync
.
Para obtener más información, consulta la documentación de rsync
.
Logra la capacidad de procesamiento máxima
Para alcanzar la capacidad de procesamiento máxima, usa una máquina con recursos de CPU suficientes para controlar la capacidad de procesamiento y saturar la tarjeta de interfaz de red (NIC). Los recursos de CPU insuficientes pueden causar una limitación de Cloud Storage FUSE.
Si usas Google Kubernetes Engine, aumenta la asignación de CPU al contenedor del archivo adicional de Cloud Storage FUSE si tus cargas de trabajo necesitan una capacidad de procesamiento mayor. Puedes aumentar los recursos que usa el contenedor de archivo adicional o asignar recursos ilimitados.
Límite de frecuencia
Para limitar la frecuencia de tráfico que Cloud Storage FUSE envía a Cloud Storage, puedes usar las siguientes opciones como parte de tu comando gcsfuse
:
La opción
--limit-ops-per-sec
controla la velocidad a la que Cloud Storage FUSE envía solicitudes a Cloud Storage.La opción
--limit-bytes-per-sec
controla el ancho de banda en el que Cloud Storage FUSE descarga los datos desde Cloud Storage.
Para obtener más información sobre estas opciones, consulta la documentación de la línea de comandos de gcsfuse
.
Todos los límites de frecuencia son aproximados y se realizan durante un período de 8 horas. De forma predeterminada, no se aplican límites de frecuencia.
Control del procedimiento de carga
De forma predeterminada, las solicitudes que fallaron de Cloud Storage FUSE a Cloud Storage se reintentan con una retirada exponencial hasta una duración máxima de retirada especificada, que tiene un valor de 30s
(30 segundos) de forma predeterminada. Una vez que la duración de retirada excede la duración máxima especificada, el reintento continúa con la duración máxima especificada. Puedes usar la opción --max-retry-sleep
como parte de una llamada gcsfuse
para especificar la duración de la retirada.
Para obtener más información sobre la opción --max-retry-sleep
, consulta la documentación de la línea de comandos de gcsfuse
.
Semántica del directorio
Cloud Storage opera con un espacio de nombres plano, lo que significa que los directorios no existen dentro de Cloud Storage. En su lugar, los directorios se representan con nombres de objetos que terminan con una barra (/
). Por ejemplo, en el nombre del objeto my-bucket/directory/file.txt
, my-bucket/directory/
representa un directorio. Los directorios que existen como parte de los nombres de objetos, pero que no existen como objetos reales, se conocen como directorios definidos de forma implícita.
De forma predeterminada, cuando activas un bucket con directorios definidos de forma implícita, Cloud Storage FUSE no puede inferir ni acceder a esos directorios. Cloud Storage FUSE solo puede inferir directorios definidos de forma explícita, lo que significa que el directorio existe como un objeto real dentro del bucket de Cloud Storage.
Por ejemplo, supongamos que activas un bucket llamado my-bucket
, que contiene el objeto my-bucket/directory/file1.txt
. Si ejecutas ls
en el punto de activación del bucket, Cloud Storage FUSE no puede acceder al directorio my-bucket/directory/
ni al objeto file1.txt
dentro de él, porque directory
no existe como un objeto en Cloud Storage. Para permitir que Cloud Storage FUSE infiera directorios y los objetos dentro de ellos, puedes hacer que los directorios se definan de forma explícita si los creas en tu sistema de archivos local con el comando mkdir
o si incluyes Opción --implicit-dirs
en el comando gcsfuse
.
Para obtener más información sobre la semántica del directorio, incluido cómo activar buckets con prefijos existentes, consulta Archivos y directorios en la documentación de GitHub.
Para obtener más información sobre la opción --implicit-dirs
, consulta la documentación de la línea de comandos de Cloud Storage FUSE.
Consideraciones para enumerar objetos
Cuando enumeras todos los objetos en un bucket activado (p. ej., con la ejecución de ls
), Cloud Storage FUSE llama a Objects: API de list en Cloud Storage. La API pagina los resultados, lo que significa que Cloud Storage FUSE puede necesitar emitir varias llamadas, según cuántos objetos haya en tu bucket. Ten en cuenta que esto puede
hacer que una operación de lista sea costosa y lenta.
Comparativas
Si deseas obtener instrucciones para realizar pruebas de carga en Cloud Storage FUSE, consulta Comparativas de rendimiento en la documentación de GitHub.
Logging
Para configurar el registro para las actividades de Cloud Storage FUSE, incluida la rotación de registros, especifica los campos en la clave logging
en un archivo de configuración de Cloud Storage FUSE. De forma predeterminada, los archivos de registro se rotan y consumen alrededor de 1 GiB de espacio.