Présentation de la mise en cache dans Cloud Storage FUSE

Cloud Storage FUSE propose trois types de mise en cache facultatives pour améliorer les performances de récupération des données :

Présentation de la mise en cache de fichiers

Le cache de fichiers Cloud Storage FUSE est un cache de lecture basé sur le client qui permet de répéter les lectures de fichiers à partir d'un stockage de cache plus rapide de votre choix. Le cache de fichiers est désactivé par défaut.

Avantages de la mise en cache de fichiers

  • Performances améliorées : la mise en cache des fichiers améliore la latence et le débit en diffusant des lectures directement à partir du support de cache. Les opérations d'E/S aléatoires et de petite taille peuvent être considérablement plus rapides lorsqu'elles sont diffusées à partir du cache.

  • Utiliser la capacité existante : la mise en cache de fichiers peut utiliser la capacité de machine existante provisionnée pour votre répertoire de cache sans frais de stockage supplémentaire. Cela inclut les disques SSD locaux fournis avec des types de machines GPU Cloud tels que a2-ultragpu et a3-highgpu, Persistent Disk, qui est le disque de démarrage utilisé par chaque VM ou /tmpfs en mémoire.

  • Frais réduits : les succès de cache (hits) sont diffusés localement et n'entraînent aucuns frais de réseau ni de fonctionnement Cloud Storage.

  • Amélioration du coût total de possession pour l'entraînement d'IA et de ML : la mise en cache de fichiers augmente l'utilisation des GPU Cloud et des Cloud TPU en chargeant les données plus rapidement, ce qui réduit le temps d'entraînement et offre un meilleur rapport performances-prix pour les charges de travail d'entraînement d'IA et de ML.

Activer et configurer le cache de fichiers

Lorsque vous activez la fonctionnalité de mise en cache des fichiers, vous définissez des champs dans un fichier de configuration Cloud Storage FUSE. La liste suivante décrit les champs que vous pouvez utiliser pour contrôler la mise en cache des fichiers:

  • Vous pouvez contrôler la capacité maximale que les données mises en cache peuvent occuper dans le répertoire de cache spécifié en définissant le paramètre max-size-mb.

    Par défaut, le champ max-size-mb est défini sur -1, ce qui permet aux données mises en cache d'augmenter jusqu'à ce qu'elles occupent toute la capacité disponible dans le répertoire que vous spécifiez en tant que valeur cache-dir.

  • Vous pouvez spécifier un répertoire pour stocker les données du cache de fichiers à l'aide du champ cache-dir. Notez que la spécification d'un répertoire de cache est une condition préalable à l'activation du cache de fichiers.

  • Vous pouvez contrôler l'heure à laquelle les données mises en cache deviennent invalidées à l'aide du champ ttl-secs. Par défaut, le champ ttl-secs est défini sur 60, ce qui spécifie 60 secondes. Nous vous recommandons d'augmenter cette valeur.

    Pour en savoir plus sur le contrôle de l'invalidation des données mises en cache, consultez la page Configurer l'invalidation de données de cache. Pour en savoir plus sur l'éviction des données mises en cache, consultez la page Éviction.

Lectures aléatoires et partielles

Si la première opération de lecture du fichier commence depuis le début du fichier ou si elle est décalée de 0, le cache de fichiers Cloud Storage FUSE ingère et charge l'intégralité du fichier dans le cache, même si vous ne lisez que des données à partir d'un petit sous-ensemble de plages. Cela permet aux lectures aléatoires ou partielles ultérieures du même objet d'être diffusées directement à partir du cache.

Si la première opération de lecture d'un fichier commence depuis un emplacement autre que le décalage 0, Cloud Storage FUSE ne déclenche pas par défaut une extraction complète de fichiers asynchrone. Pour modifier ce comportement de sorte que Cloud Storage FUSE ingère un fichier dans le cache lors d'une lecture aléatoire initiale, définissez l'option cache-file-for-range-read sur true. Nous vous recommandons d'activer l'option cache-file-for-range-read si de nombreuses opérations de lecture aléatoires ou partielles différentes sont effectuées sur le même objet.

Éviction

L'éviction des métadonnées et des données mises en cache est basée sur un algorithme le moins récemment utilisé (LRU, least recently used) qui commence une fois que le seuil d'espace configuré par limite max-size-mb est atteint. Si l'entrée expire en fonction de sa valeur TTL, un appel d'obtention des métadonnées est d'abord effectué vers Cloud Storage et est soumis aux latences du réseau. Puisque les données et les métadonnées sont gérées séparément, une entité peut être évincée ou invalidée, sans nécessiter que l'autre le soit aussi.

Performances

La mise en cache Cloud Storage FUSE fonctionne avec n'importe quel répertoire spécifié par l'utilisateur et sauvegardé par l'espace de stockage de votre choix, tel que Local SSD, Persistent Disk.en mémoire tmpfs ou Filestore. Les performances du cache Cloud Storage FUSE correspondent au stockage sous-jacent utilisé par le cache avec une surcharge minimale. Pour en savoir plus sur les performances de mise en cache, consultez la page Performances et bonnes pratiques de mise en cache de Cloud Storage FUSE.

Persistance

Les caches Cloud Storage FUSE ne sont pas conservés lors des désinstallations et redémarrent lorsque toutes les entrées de métadonnées sont supprimées. Toutefois, les données du cache de fichiers ne sont pas évincées et doivent être supprimées par l'utilisateur, ou peuvent être réutilisées dans les opérations d'installation ultérieures une fois les métadonnées à nouveau renseignées.

Sécurité

Lorsque vous activez la mise en cache, Cloud Storage FUSE utilise le fichier cache-dir spécifié que vous avez défini comme répertoire sous-jacent pour le cache afin de conserver les fichiers de votre bucket Cloud Storage dans un format non chiffré. Tout utilisateur ou processus ayant accès à ce répertoire de cache peut accéder à ces fichiers. Nous vous recommandons de restreindre l'accès à ce répertoire.

Accès direct ou multiple au cache de fichiers

L'utilisation d'un processus autre que Cloud Storage FUSE pour accéder à un fichier du répertoire de cache ou le modifier peut entraîner une corruption des données. Les caches Cloud Storage FUSE sont spécifiques à chaque processus Cloud Storage FUSE en cours d'exécution, sans connaître les différents processus Cloud Storage FUSE s'exécutant sur la même machine ou sur des machines différentes. Par la suite, le même répertoire de cache ne doit pas être utilisé par différents processus Cloud Storage FUSE.

Si plusieurs processus Cloud Storage FUSE doivent s'exécuter sur la même machine, chacun d'entre eux doit obtenir son propre répertoire de cache ou utiliser l'une des méthodes suivantes pour éviter que vos données ne soient corrompues :

  • Installer tous les buckets avec un cache partagé : utilisez l'installation dynamique pour installer tous les buckets auxquels vous avez accès dans un même processus avec un cache partagé. Pour en savoir plus, consultez la section Installation dynamique Cloud Storage FUSE.

  • Activer la mise en cache sur un bucket spécifique : vous pouvez activer la mise en cache sur un bucket spécifique à l'aide de l'installation statique. Pour en savoir plus, consultez la section Installation statique de Cloud Storage FUSE.

  • Mettre en cache uniquement un dossier ou un répertoire spécifique : plutôt que d'installer un bucket entier, vous pouvez utiliser l'option –only-dir pour installer et mettre en cache uniquement un dossier spécifique au niveau du bucket. Pour en savoir plus, consultez la section Installer un répertoire dans un bucket.

Présentation de la mise en cache de statistiques

Le cache de statistiques de Cloud Storage FUSE est un cache pour les métadonnées d'objets qui améliore les performances des opérations spécifiques aux attributs de fichier, telles que la taille, la date de modification ou les autorisations. L'utilisation du cache de statistiques améliore la latence en utilisant des données mises en cache pour effectuer des opérations au lieu d'envoyer une requête d'objet statistique à Cloud Storage. Par défaut, le cache de statistiques est activé avec une valeur stat-cache-max-size-mb de 32 Mo et une valeur ttl-secs définie sur 60 secondes. Nous vous recommandons d'augmenter les deux valeurs. Pour en savoir plus sur la mise en cache de statistiques, consultez la documentation sur la sémantique sur GitHub.

Présentation de la mise en cache de types

Le cache de type Cloud Storage FUSE est un cache de métadonnées qui accélère les performances des opérations de métadonnées spécifiques à l'existence d'un fichier ou d'un répertoire. Le cache de types améliore la latence en réduisant le nombre de requêtes adressées à Cloud Storage pour vérifier si un fichier ou un répertoire existe en stockant ces informations localement. Par défaut, le cache de types est activé avec une valeur type-cache-max-size-mb de 4 Mo et une valeur ttl-secs de 60 secondes par défaut. Nous vous recommandons d'augmenter les deux valeurs. Pour en savoir plus sur la mise en cache de types, consultez la documentation sur la sémantique sur GitHub.

Configurer l'invalidation de cache

Le champ ttl-secs indique la durée pendant laquelle les métadonnées restent valides dans le cache du fichier. Le champ représente la valeur TTL (Time To Live) des données mises en cache, où les données mises en cache sont invalidées une fois la valeur TTL expirée. Lorsqu'une entrée de métadonnées n'est plus valide, les lectures suivantes sont interrogées à partir de Cloud Storage.

Vous pouvez configurer ttl-secs dans un fichier de configuration Cloud Storage FUSE.

Lorsque vous spécifiez pour ttl-secs une valeur supérieure à 0, les métadonnées du cache de fichiers ne restent valides que pendant la durée spécifiée. La valeur par défaut 60 est définie pour tous les types de cache. Pour la mise en cache de fichiers, nous vous recommandons d'augmenter la valeur ttl-secs en fonction du temps attendu entre les lectures répétées tout en équilibrant les besoins en cohérence. En fonction de l'importance et de la fréquence des modifications des données, nous vous recommandons de définir la valeur ttl-secs sur une valeur aussi élevée que le permet votre charge de travail.

Outre la spécification d'une valeur représentant le nombre de secondes, l'option ttl-secs accepte également les valeurs 0 et -1.

  • Valeur ttl-secs de 0 : lorsque vous saisissez la valeur 0, l'option ttl-secs garantit que le fichier le plus récent est lu en émettant un appel de métadonnées Get à Cloud Storage qui vérifie le fichier à partir duquel il est diffusé pour s'assurer que le cache est cohérent. Si le fichier dans le cache est à jour, il est diffusé directement à partir du cache. Les performances sont moins efficaces que lorsque vous spécifiez une valeur ttl-secs autre que 0, car un appel doit toujours être envoyé à Cloud Storage pour vérifier d'abord les métadonnées. Si le fichier se trouve dans le cache et n'a pas été modifié, il est diffusé à partir du cache de manière cohérente après l'appel d'obtention des métadonnées.

  • Valeur ttl-secs de -1 : lorsque vous saisissez la valeur -1, le fichier est toujours lu à partir du cache, s'il est disponible, sans vérifier la cohérence. La diffusion de fichiers sans en vérifier la cohérence peut entraîner la diffusion de données incohérentes et ne doit être utilisée que temporairement pour les charges de travail exécutées dans des jobs avec des données non modifiées. Par exemple, utiliser une valeur -1 est utile pour l'entraînement de machine learning, où les mêmes données sont lues sur plusieurs époques sans modification.

Chemin de lecture pour les données mises en cache

Le cache Cloud Storage FUSE accélère les lectures répétées après leur ingestion dans le cache. Les lectures initiales et les défauts de cache sont transmis directement à Cloud Storage et sont soumis aux latences réseau normales de Cloud Storage.

Remarques

  • L'utilisation de Cloud Storage FUSE avec la mise en cache des fichiers, des statistiques ou des types peut augmenter les performances, mais réduire la cohérence. Pour en savoir plus, consultez la documentation sur la sémantique sur GitHub.

  • Si une entrée de cache de fichiers n'a pas encore expiré en fonction de sa valeur TTL et que le fichier se trouve dans le cache, l'intégralité de l'opération est diffusée à partir du cache du client local sans qu'aucune requête ne soit émise vers Cloud Storage.

  • Si une entrée de cache de fichiers a expiré sur la base de sa valeur TTL, un appel d'obtention des métadonnées est d'abord effectué vers Cloud Storage. Si le fichier ne se trouve pas dans le cache, il est extrait de Cloud Storage. Ces deux opérations sont soumises à des latences réseau. Si l'entrée de métadonnées a été invalidée, mais que le fichier se trouve dans le cache et que sa génération d'objet n'a pas changé, le fichier n'est diffusé à partir du cache qu'après l'appel des métadonnées Get pour vérifier si les données sont valides.

  • Si un client Cloud Storage FUSE modifie un fichier mis en cache ou ses métadonnées, le fichier est immédiatement invalidé et la cohérence est assurée dans la lecture suivante par le même client. Toutefois, si différents clients accèdent au même fichier ou à ses métadonnées, et que ses entrées sont mises en cache, la version mise en cache du fichier ou des métadonnées est lue et non la version mise à jour tant que le fichier n'est pas invalidé par le paramètre TTL de ce client spécifique.

Étapes suivantes