Cloud Storage FUSE propose quatre 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 diffuse des lectures de fichiers répétées à partir d'un stockage de cache plus rapide de votre choix.
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 petites et aléatoires 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 SSD locaux fournis avec des types de machines GPU Cloud tels que
a2-ultragpu
,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
Le cache de fichiers est désactivé par défaut. Vous pouvez l'activer et le configurer à l'aide d'un fichier de configuration Cloud Storage FUSE. Vous pouvez contrôler le comportement de mise en cache à l'aide des champs suivants:
max-size-mb
: contrôle la capacité maximale que les données mises en cache peuvent occuper dans votre répertoire de cache. Par défaut, le champmax-size-mb
est défini pour permettre aux données mises en cache de croître jusqu'à occuper toute la capacité disponible dans votre répertoire de cache.cache-dir
: spécifie un répertoire pour stocker les données du cache de fichiers. Notez que vous devez spécifier un répertoire de cache pour activer le cache de fichiers.ttl-secs
: détermine quand les données mises en cache deviennent obsolètes et doivent être actualisées à partir de Cloud Storage. Par défaut, le champttl-secs
est défini pour expirer et s'actualiser à partir de Cloud Storage après 60 secondes d'inactivité. Nous vous recommandons d'augmenter cette valeur.Pour découvrir comment contrôler l'invalidation des données de cache, consultez la section Configurer l'invalidation des données de cache. Pour en savoir plus sur l'éviction des données mises en cache, consultez la section Éviction.
enable-parallel-downloads
: accélère les performances de lecture pour les fichiers volumineux de plus de 1 Go, y compris les premières lectures, en utilisant plusieurs nœuds de calcul pour télécharger un fichier en parallèle à l'aide du répertoire de cache de fichiers comme tampon de préchargement. Nous vous recommandons d'activer les téléchargements parallèles pour les opérations de mise en service et de restauration des points de contrôle. Pour en savoir plus sur l'activation et la configuration des téléchargements parallèles, consultez la section Configurer les téléchargements parallèles.
Lectures aléatoires et partielles
Si la première opération de lecture du fichier commence depuis le début du fichier, au décalage 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 à un autre endroit que le décalage 0
, Cloud Storage FUSE ne déclenche pas par défaut une récupération complète du fichier de manière asynchrone.
Pour modifier ce comportement afin que Cloud Storage FUSE ingère un fichier dans le cache lors d'une lecture aléatoire initiale, définissez l'indicateur cache-file-for-range-read
sur true
. Nous vous recommandons d'activer l'indicateur 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.
Persistance
Les caches Cloud Storage FUSE ne sont pas conservés lors des opérations d'éjection et de redémarrage. Pour le stockage en cache de fichiers, même si les entrées de métadonnées nécessaires pour diffuser des fichiers à partir du cache sont supprimées lors des opérations d'éjection et de redémarrage, les données du cache de fichiers peuvent toujours être présentes dans le répertoire de fichiers. Vous devez supprimer les données du répertoire de cache de fichiers après un démontage ou un redémarrage.
Sécurité
Lorsque vous activez la mise en cache, Cloud Storage FUSE utilise le répertoire de cache que vous avez spécifié à l'aide du champ cache-dir
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 limiter 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 la corruption des données. Les caches Cloud Storage FUSE sont spécifiques à chaque processus Cloud Storage FUSE en cours d'exécution, sans connaissance des différents processus Cloud Storage FUSE exécutés sur la même machine ou sur des machines différentes. Par conséquent, nous vous déconseillons d'utiliser le même répertoire de cache pour différents processus FUSE Cloud Storage.
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 de Cloud Storage FUSE.
Activer la mise en cache sur un bucket spécifique: activez la mise en cache sur un bucket spécifique à l'aide de l'installation statique. Pour en savoir plus, consultez la section Installation statique Cloud Storage FUSE.
Mettre en cache uniquement un dossier ou un répertoire spécifique: installez et mettez en cache uniquement un dossier spécifique au niveau du bucket au lieu d'installer un bucket entier. Pour en savoir plus, consultez Installer un répertoire dans un bucket.
Présentation de la mise en cache de statistiques
Le cache de statistiques 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 tels que la taille, l'heure de modification ou les autorisations. L'utilisation du cache d'état améliore la latence en utilisant les données mises en cache pour effectuer des opérations au lieu d'envoyer une requête d'objet d'état à Cloud Storage. Pour en savoir plus sur la mise en cache de statistiques, consultez la documentation sur la sémantique sur GitHub.
Le cache de statistiques est activé par défaut et peut être configuré à l'aide d'un fichier de configuration Cloud Storage FUSE. La taille maximale du cache est contrôlée par le champ stat-cache-max-size-mb
, dont la valeur par défaut est 32
(32 Mo). Le TTL du cache est contrôlé par le champ ttl-secs
, qui a une valeur par défaut de 60
(60 secondes).
Bonnes pratiques
Pour la mise en cache des statistiques, nous vous recommandons d'utiliser la valeur par défaut de 32
pour le champ stat-cache-max-size-mb
si votre charge de travail implique jusqu'à 20 000 fichiers.
Si votre charge de travail dépasse 20 000 fichiers, augmentez la valeur stat-cache-max-size-mb
de 10 pour 6 000 fichiers supplémentaires, environ 1 500 octets par fichier.
stat-cache-max-size-mb
est une limite au niveau de l'installation, et l'utilisation réelle de la mémoire peut être inférieure à la valeur spécifiée. Vous pouvez également définir stat-cache-max-size-mb
sur -1
pour permettre au cache de statistiques d'utiliser autant de mémoire que nécessaire.
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. Pour en savoir plus sur la mise en cache de types, consultez la documentation sur la sémantique sur GitHub.
Le cache de types est activé par défaut et peut être configuré à l'aide d'un fichier de configuration Cloud Storage FUSE. La taille maximale du cache est contrôlée par le champ type-cache-max-size-mb
, dont la valeur par défaut est 4
(4 Mo). Le TTL du cache est contrôlé par le champ ttl-secs
, qui a une valeur par défaut de 60
(60 secondes).
Bonnes pratiques
Pour la mise en cache de type, nous vous recommandons d'utiliser la valeur par défaut 4
pour le champ type-cache-max-size-mb
si le nombre maximal de fichiers dans un seul répertoire du bucket que vous installez est de 20 000 fichiers ou moins. Si le nombre maximal de fichiers dans un même répertoire que vous installez contient plus de 20 000 fichiers, augmentez la valeur type-cache-max-size-mb
de 1
pour 5 000 fichiers, soit environ 200 octets par fichier.
type-cache-max-size-mb
est une limite au niveau de l'installation, et l'utilisation réelle de la mémoire peut être inférieure à la valeur spécifiée. Vous pouvez également définir la valeur type-cache-max-size-mb
sur -1
pour permettre au cache de types d'utiliser autant de mémoire que nécessaire.
Présentation de la mise en cache de listes
Le cache de liste Cloud Storage FUSE est destiné aux réponses de liste de répertoires et de fichiers (ls
) qui améliorent la vitesse des opérations de liste. La mise en cache de la liste est particulièrement utile pour les charges de travail qui répètent des listes d'annuaire complètes lors de l'exécution, telles que les exécutions d'entraînement AI/ML.
Le cache de listes est conservé en mémoire dans le cache de pages, qui est contrôlé par le noyau en fonction de la disponibilité de la mémoire, contrairement aux caches d'état et de type, qui sont conservés dans la mémoire de votre machine et contrôlés par Cloud Storage FUSE.
Activer la mise en cache des listes
Le cache de liste est désactivé par défaut.
Vous pouvez activer le stockage en cache de la liste à l'aide du champ kernel-list-cache-ttl-secs
avec l'une des valeurs suivantes:
Valeur positive représentant la valeur TTL (Time To Live) en secondes pour conserver la réponse de la liste d'annuaires dans le cache de page du noyau.
Valeur
-1
pour contourner l'expiration de l'entrée et renvoyer la réponse de la liste à partir du cache lorsqu'elle est disponible.
Pour activer et configurer la mise en cache des listes, consultez le fichier de configuration Cloud Storage FUSE.
Configurer l'invalidation du cache
Les sections suivantes expliquent comment configurer l'invalidation du cache pour tous les types de cache.
Invalidation du cache de fichiers, de statistiques et de types
Pour les caches de fichiers, de statistiques et de types, le champ ttl-secs
spécifie la valeur TTL en secondes pendant laquelle les métadonnées mises en cache sont utilisées à partir du moment où elles sont extraites de Cloud Storage jusqu'à leur expiration et leur actualisation.
Vous pouvez configurer ttl-secs
dans un fichier de configuration Cloud Storage FUSE.
Le champ ttl-secs
est défini sur 60
par défaut.
Lorsque vous spécifiez une valeur pour ttl-secs
supérieure à 0
, les métadonnées du cache de fichiers ne restent valides que pendant la durée que vous avez spécifiée.
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. Lorsqu'une entrée de métadonnées devient non valide, les lectures suivantes sont interrogées à partir de Cloud Storage.
En plus d'accepter des valeurs représentant un TTL spécifique en secondes avant que vos métadonnées mises en cache n'expirent et ne doivent être actualisées, vous pouvez utiliser les valeurs suivantes pour spécifier comment votre fichier est lu:
Valeur
ttl-secs
de0
: garantit que le fichier contenant les données les plus récentes est lu en émettant un appel de métadonnéesGET
à Cloud Storage qui vérifie le fichier à partir duquel il est diffusé pour s'assurer que le cache est cohérent. Si le fichier du cache est à jour, il est diffusé directement à partir du cache. Spécifier une valeur autre que0
peut entraîner une baisse des performances, car un appel doit toujours être effectué à 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 des métadonnéesGET
.Valeur
ttl-secs
de-1
: garantit que 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 de-1
est utile pour l'entraînement de machine learning, où les mêmes données sont lues sur plusieurs époques sans modification.
Invalidation de cache de liste
L'invalidation du cache de liste est définie en spécifiant une valeur supérieure à 0
à l'aide du champ kernel-list-cache-ttl-secs
. La réponse de la liste d'annuaires est conservée dans le cache de page du noyau et reste valide pendant la durée que vous avez spécifiée.
Par défaut, le cache de liste est désactivé et défini sur 0
. Lorsque vous spécifiez la valeur -1
, Cloud Storage FUSE désactive l'expiration du cache de la liste et renvoie la réponse de la liste à partir du cache lorsqu'elle est disponible.
Chemin d'accès aux 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 erreurs de cache sont directement envoyées à Cloud Storage et sont soumises aux latences réseau Cloud Storage normales. Pour améliorer les performances de la première lecture, consultez la page Améliorer les performances de la première lecture.
Remarques
L'activation de la mise en cache des fichiers, des statistiques, des types ou des listes peut augmenter les performances, mais réduire la cohérence, ce qui se produit généralement lorsque vous accédez au même bucket à l'aide de plusieurs clients avec un taux de modification élevé. Pour réduire l'impact sur la cohérence, nous vous recommandons de monter les buckets en lecture seule. Pour en savoir plus sur le comportement de la mise en cache, consultez la documentation sur la sémantique de Cloud Storage FUSE 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 diffusée pour 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. Les 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.
Pour éviter le thrashing du cache, assurez-vous que l'intégralité de votre ensemble de données est adapté à la capacité de cache. Tenez également compte de la capacité et des performances maximales que votre support de cache peut fournir. Si vous atteignez les performances maximales, la limite de capacité ou les deux, il est avantageux de lire directement depuis Cloud Storage, qui présente des limites beaucoup plus élevées que Cloud Storage FUSE.
Étape suivante
Découvrez comment utiliser et configurer la mise en cache des fichiers.
Découvrez comment améliorer les performances de lecture et d'écriture.