Descripción general del almacenamiento en caché en Cloud Storage FUSE

Cloud Storage FUSE proporciona tres tipos de almacenamiento en caché opcional para ayudar a aumentar el rendimiento de la recuperación de datos:

Descripción general del almacenamiento en caché de archivos

La caché de archivos de Cloud Storage FUSE es una caché de lectura basada en el cliente que permite que las lecturas de archivos repetidas se entreguen desde el almacenamiento en caché más rápido que elijas. La caché de archivos está inhabilitada de forma predeterminada.

Beneficios del almacenamiento en caché de archivos

  • Rendimiento mejorado: el almacenamiento en caché de archivos mejora la latencia y la capacidad de procesamiento a través de la entrega de lecturas directamente desde los medios de caché. Las operaciones de E/S pequeñas y aleatorias pueden ser mucho más rápidas cuando se entregan desde la caché.

  • Usar la capacidad existente: el almacenamiento en caché de archivos puede usar la capacidad de la máquina aprovisionada existente para el directorio de caché sin incurrir en cargos por almacenamiento adicional. Esto incluye las SSD locales que vienen con los tipos de máquina de GPU de Cloud, como a2-ultragpu y a3-highgpu, Persistent Disk, que es el disco de arranque que usa cada máquina virtual (VM) o /tmpfs en la memoria.

  • Cargos reducidos: los aciertos de caché se entregan de forma local y no generan cargos de red ni de operaciones de Cloud Storage.

  • Mejora en el costo total de propiedad para el capacitación de IA y AA: el almacenamiento en caché de archivos aumenta las GPU de Cloud y el uso de Cloud TPU mediante la carga de datos más rápido, lo que reduce el tiempo de capacitación y proporciona una mayor relación entre precio y rendimiento para las cargas de trabajo de capacitación de IA y AA.

Habilita y configura la caché de archivos

Cuando habilitas la función de almacenamiento en caché de archivos, debes establecer campos en un archivo de configuración de Cloud Storage FUSE. En la siguiente lista, se describen los campos que puedes usar para controlar el almacenamiento en caché de archivos:

  • Puedes controlar la capacidad máxima en el directorio de caché especificado que pueden ocupar los datos almacenados en caché si configuras el max-size-mb.

    De forma predeterminada, el campo max-size-mb se establece en un valor de -1, que permite que los datos almacenados en caché crezcan hasta que ocupen toda la capacidad disponible en el directorio que especifiques como valor en cache-dir.

  • Puedes especificar un directorio para almacenar datos de caché de archivos mediante el campo cache-dir. Ten en cuenta que especificar un directorio de caché es un requisito para habilitar la caché de archivos.

  • Puedes controlar el momento en que los datos almacenados en caché se invalidan mediante el campo ttl-secs. De forma predeterminada, el campo ttl-secs se establece en 60, que especifica 60 segundos. Te recomendamos que aumentes el valor.

    Para obtener más detalles sobre cómo controlar la invalidación de datos almacenados en caché, consulta Configuración de la invalidación de datos de caché. Para obtener más información sobre la expulsión de datos almacenados en caché, consulta Expulsión.

Lecturas aleatorias y parciales

Si la primera operación de lectura de archivos empieza desde el principio del archivo o compensa 0, la caché del archivo de Cloud Storage FUSE transfiere y carga todo el archivo en la caché, incluso si solo estás leyendo. de un subconjunto pequeño. Esto permite que las lecturas aleatorias o parciales posteriores del mismo objeto se entreguen directamente desde la caché.

Si la primera operación de lectura de un archivo empieza desde cualquier lugar que no sea el desplazamiento 0, Cloud Storage FUSE, de forma predeterminada, no activa una recuperación de archivo completa asíncrona. Para cambiar este comportamiento para que Cloud Storage FUSE transfiera un archivo a la caché en una lectura aleatoria inicial, configura la marca cache-file-for-range-read como true. Te recomendamos que habilites la marca cache-file-for-range-read si se realizan muchas operaciones de lectura parciales o aleatorias diferentes en el mismo objeto.

Expulsión

La expulsión de metadatos y datos almacenados en caché se basa en el algoritmo menos usado recientemente (LRU) que empieza una vez que se alcanza el límite de espacio configurado por límite max-size-mb. Si la entrada vence según su TTL, primero se realiza una llamada Obtener metadatos en Cloud Storage y está sujeta a latencias de red. Debido a que los datos y los metadatos se administran por separado, es posible que experimentes una entidad expulsada o invalidada y no otra.

Rendimiento

El almacenamiento en caché del FUSE de Cloud Storage funciona con cualquier directorio especificado por el usuario que esté respaldado por el almacenamiento que elijas, como SSD local, disco persistente: en memoria tmpfs o Filestore. El rendimiento de la caché de Cloud Storage FUSE coincide con el almacenamiento subyacente que usa la caché con una sobrecarga mínima. Para obtener más información sobre el rendimiento del almacenamiento en caché, consulta Rendimiento y prácticas recomendadas del almacenamiento en caché de Cloud Storage FUSE.

Persistencia

Las cachés de Cloud Storage FUSE no se conservan en las desactivaciones y se reinician cuando se expulsan todas las entradas de metadatos. Sin embargo, los datos en la caché del archivo no se expulsan y el usuario debe borrarlos o se pueden volver a usar en operaciones de activación posteriores una vez que los metadatos se propagan nuevamente.

Seguridad

Cuando habilitas el almacenamiento en caché, Cloud Storage FUSE usa el cache-dir especificado que estableciste como directorio subyacente para que la caché conserve los archivos de tu bucket de Cloud Storage en un formato sin encriptar. Cualquier usuario o proceso que tenga acceso a este directorio de caché puede acceder a estos archivos. Te recomendamos restringir el acceso a este directorio.

Acceso directo o múltiple a la caché de archivos

El uso de un proceso que no sea Cloud Storage FUSE para acceder a un archivo en el directorio de la caché o modificarlo puede provocar daños en los datos. Las cachés de Cloud Storage FUSE son específicas de cada proceso en ejecución de Cloud Storage FUSE sin conocimiento en diferentes procesos de Cloud Storage FUSE que se ejecutan en las mismas máquinas o en máquinas diferentes. Luego, diferentes procesos de Cloud Storage FUSE no deben usar el mismo directorio de caché.

Si varios procesos de Cloud Storage FUSE necesitan ejecutarse en la misma máquina, cada proceso de Cloud Storage FUSE debe obtener su propio directorio de caché específico o usar uno de los siguientes métodos para garantizar que tus datos no se dañen:

  • Activa todos los buckets con una caché compartida: usa la activación dinámica para activar todos los buckets a los que tienes acceso en un solo proceso con una caché compartida. Para obtener más información, consulta Activación dinámica de Cloud Storage FUSE.

  • Habilita el almacenamiento en caché en un bucket específico: puedes habilitar el almacenamiento en caché solo en un bucket específico mediante la activación estática. Para obtener más información, consulta Activación estática de Cloud Storage FUSE.

  • Almacena en caché solo una carpeta o directorio específico: en lugar de activar un bucket completo, puedes usar la opción –only-dir para activar y almacenar en caché solo una carpeta de nivel de bucket específica. Para obtener más información, consulta Activa un directorio dentro de un depósito.

Descripción general del almacenamiento en caché de estadísticas

La caché de estadísticas de Cloud Storage FUSE es una caché para metadatos de objetos que mejora el rendimiento de operaciones específicas de los atributos de archivo, como el tamaño, la hora de modificación o los permisos. El uso de la caché de estadística mejora la latencia con el uso de datos almacenados en caché para llevar a cabo operaciones en lugar de enviar una solicitud de objeto de estadística a Cloud Storage. De forma predeterminada, la caché de estadísticas se habilita con un valor stat-cache-max-size-mb de 32 MB y un valor ttl-secs establecido en 60 segundos. Recomendamos aumentar ambos valores. Para obtener más información sobre el almacenamiento en caché de estadísticas, consulta la documentación de semántica en GitHub.

Descripción general del almacenamiento en caché de tipo

La caché de tipo de Cloud Storage FUSE es una caché de metadatos que acelera el rendimiento de las operaciones de metadatos específicas para la existencia de archivos o directorios. El uso de la caché de tipo mejora la latencia, ya que reduce la cantidad de solicitudes que se le hacen a Cloud Storage para comprobar si existe un archivo o directorio con el almacenamiento de esta información de forma local. De forma predeterminada, la caché de tipo está habilitada con un valor type-cache-max-size-mb de 4 MB y un valor ttl-secs de 60 segundos de forma predeterminada. Recomendamos aumentar ambos valores. Para obtener más información sobre el almacenamiento en caché de tipos, consulta la documentación de semántica en GitHub.

Configura la invalidación de caché

El campo ttl-secs especifica por cuánto tiempo los metadatos permanecen válidos en la caché de archivos. El campo representa el tiempo de actividad (TTL) de los datos almacenados en caché, en el que los datos almacenados en caché se invalidan una vez que vence el TTL. Cuando una entrada de metadatos deja de ser válida, se consultan las lecturas posteriores desde Cloud Storage.

Puedes configurar ttl-secs en un archivo de configuración de Cloud Storage FUSE.

Cuando especificas un valor de ttl-secs mayor que 0, los metadatos de la caché del archivo siguen siendo válidos solo durante el tiempo que especificaste. Se establece un valor predeterminado de 60 para todos los tipos de caché. Para el almacenamiento en caché de archivos, te recomendamos que aumentes el valor ttl-secs según el tiempo esperado entre lecturas repetidas mientras balanceas las necesidades de coherencia. Según la importancia y la frecuencia de los datos que cambian, te recomendamos establecer el valor ttl-secs tan alto como lo permita tu carga de trabajo.

Además de especificar un valor que represente la cantidad de segundos, la marca ttl-secs también admite los valores de 0 y -1.

  • Valor ttl-secs de 0: cuando escribes un valor de 0, la marca ttl-secs garantiza que se lea el archivo más actualizado mediante la emisión una llamada de obtención de metadatos a Cloud Storage que compruebe el archivo desde el que se entrega para garantizar que la caché sea coherente. Si el archivo en la caché está actualizado, se entrega directamente desde la caché. El rendimiento es menos efectivo que cuando especificas un valor ttl-secs distinto de 0, ya que siempre se debe realizar una llamada a Cloud Storage para comprobar los metadatos primero. Si el archivo está en la caché y no cambió, el archivo se entrega desde la caché con coherencia después de la llamada Obtener metadatos.

  • Valor ttl-secs de -1: cuando escribas un valor de -1, el archivo siempre se lee desde la caché, si está disponible, sin comprobar el valor coherencia. Entrega archivos sin comprobar la coherencia puede entregar datos incoherentes y solo debe usarse de forma temporal para las cargas de trabajo que se ejecutan en trabajos con datos que no cambian. Por ejemplo, usar un valor de -1 es útil para el capacitación de aprendizaje automático, en el que se leen los mismos datos en varios ciclos de capacitación sin cambios.

Ruta de lectura para los datos almacenados en caché

La caché de Cloud Storage FUSE acelera las lecturas repetidas después de que se transfieran a la caché. Las lecturas por primera vez y los errores de caché van directamente a Cloud Storage y están sujetos a latencias de red normales de Cloud Storage.

Consideraciones

  • El uso de Cloud Storage FUSE con el almacenamiento en caché de archivos, el almacenamiento en caché de estadísticas o el almacenamiento en caché de tipos habilitado puede aumentar el rendimiento, pero reducir la coherencia. Para obtener más información, consulta la documentación de semántica en GitHub.

  • Si una entrada de caché de archivos aún no venció en función de su TTL y el archivo está en la caché, toda la operación se entrega desde la caché del cliente local sin que se emita ninguna solicitud a Cloud Storage.

  • Si una entrada de caché de archivos venció en función de su TTL, primero se hace una llamada de Obtener metadatos a Cloud Storage y, si el archivo no está en la caché, se recupera de Cloud Storage. Ambas operaciones están sujetas a latencias de red. Si se invalidó la entrada de metadatos, pero el archivo está en la caché y su generación de objetos no cambió, el archivo se entrega desde la caché solo después de que se realiza la llamada Get de metadatos para comprobar si los datos son válidos.

  • Coherencia: si un cliente de Cloud Storage FUSE modifica un archivo almacenado en caché o sus metadatos, el archivo se invalida de inmediato y el mismo cliente garantiza la coherencia en la siguiente lectura. Sin embargo, si diferentes clientes acceden al mismo archivo o a sus metadatos y sus entradas se almacenan en caché, entonces la versión almacenada en caché del archivo o los metadatos se lee y no la versión actualizada hasta que el archivo se invalida. la configuración de TTL de ese cliente específico.

¿Qué sigue?