Panoramica della memorizzazione nella cache in Cloud Storage FUSE

Cloud Storage FUSE offre tre tipi di memorizzazione nella cache facoltativa per aumentare le prestazioni del recupero dati:

Panoramica della memorizzazione nella cache dei file

La cache per i file di Cloud Storage FUSE è una cache di lettura basata su client che consente di fornire letture di file ripetute da uno spazio di archiviazione cache più rapido a tua scelta. La cache dei file è disabilitata per impostazione predefinita.

Vantaggi della memorizzazione nella cache dei file

  • Prestazioni migliorate: la memorizzazione nella cache dei file migliora la latenza e la velocità effettiva grazie alla pubblicazione delle letture direttamente dal supporto della cache. Le operazioni di I/O piccole e casuali possono essere significativamente più veloci se gestite dalla cache.

  • Utilizza capacità esistente: la memorizzazione nella cache dei file può utilizzare la capacità della macchina di cui è stato eseguito il provisioning esistente per la directory della cache senza dover sostenere costi per lo spazio di archiviazione aggiuntivo. Questo include gli SSD locali forniti in bundle con tipi di macchine GPU Cloud come a2-ultragpu, a3-highgpu, Persistent Disk (che è il disco di avvio utilizzato da ogni VM) o /tmpfs in memoria.

  • Costi ridotti: i hit della cache vengono pubblicati localmente e non comportano costi di rete o operazioni di Cloud Storage.

  • Costo totale di proprietà migliorato per l'addestramento IA e ML: la memorizzazione nella cache dei file aumenta l'utilizzo di GPU Cloud e Cloud TPU caricando i dati più rapidamente, riducendo i tempi di addestramento e offrendo un rapporto prezzo/prestazioni migliore per i carichi di lavoro di addestramento di AI e ML.

Abilitazione e configurazione della cache dei file

Quando abiliti la funzionalità di memorizzazione nella cache dei file, imposti i campi in un file di configurazione di Cloud Storage FUSE. Nell'elenco seguente sono descritti i campi che puoi utilizzare per controllare la memorizzazione nella cache dei file:

  • Puoi controllare la capacità massima nella directory specificata della cache che i dati memorizzati nella cache possono occupare impostando il max-size-mb.

    Per impostazione predefinita, il campo max-size-mb è impostato sul valore -1, che consente di aumentare i dati memorizzati nella cache fino a occupare tutta la capacità disponibile nella directory specificata come valore pari a cache-dir.

  • Puoi specificare una directory per l'archiviazione dei dati della cache di file utilizzando il campo cache-dir. Specificare una directory della cache è un prerequisito per l'abilitazione della cache dei file.

  • Puoi controllare il momento in cui i dati memorizzati nella cache vengono invalidati utilizzando il campo ttl-secs. Per impostazione predefinita, il campo ttl-secs è impostato su 60, che specifica 60 secondi. Ti consigliamo di aumentare il valore.

    Per maggiori dettagli su come controllare l'annullamento della convalida dei dati memorizzati nella cache, consulta Configurare l'annullamento della convalida dei dati della cache. Per ulteriori informazioni sull'eliminazione dei dati memorizzati nella cache, consulta la sezione Eliminazione dei dati.

Letture casuali e parziali

Se la prima operazione di lettura del file viene avviata dall'inizio del file (all'offset 0), la cache del file di Cloud Storage FUSE importa e carica l'intero file nella cache, anche se stai leggendo solo da un sottoinsieme di intervalli ridotti. Ciò consente di eseguire letture casuali o parziali successive dello stesso oggetto direttamente dalla cache.

Se la prima operazione di lettura di un file inizia da un punto qualsiasi che non sia l'offset 0, Cloud Storage FUSE, per impostazione predefinita, non attiva un recupero asincrono completo del file. Per modificare questo comportamento in modo che Cloud Storage FUSE importi un file nella cache dopo una lettura casuale iniziale, imposta il flag cache-file-for-range-read su true. Ti consigliamo di abilitare il flag cache-file-for-range-read se vengono eseguite molte operazioni di lettura casuali o parziali diverse sullo stesso oggetto.

Rimozione

L'eliminazione dei metadati e dei dati memorizzati nella cache si basa su un algoritmo utilizzato meno di recente (LRU) che inizia una volta raggiunta la soglia di spazio configurata per il limite di max-size-mb. Se la voce scade in base al suo TTL, viene prima effettuata una chiamata di recupero dei metadati a Cloud Storage ed è soggetta a latenze di rete. Poiché i dati e i metadati vengono gestiti separatamente, potresti riscontrare la rimozione o la invalidazione di un'entità e non l'altra.

Prestazioni

La memorizzazione nella cache di Cloud Storage FUSE funziona con qualsiasi directory specificata dall'utente supportata dall'archiviazione che preferisci, ad esempio SSD locale, Disco permanente, in memoria tmpfs o Filestore. Le prestazioni della cache di Cloud Storage FUSE corrispondono allo spazio di archiviazione sottostante utilizzato dalla cache con un overhead minimo. Per saperne di più sulle prestazioni della memorizzazione nella cache, consulta Prestazioni e best practice per la memorizzazione nella cache di Cloud Storage FUSE.

Persistenza

Le cache di Cloud Storage FUSE non vengono rese persistenti sugli smontaggi e si riavviano quando tutte le voci di metadati vengono rimosse. Tuttavia, i dati nella cache dei file non vengono rimossi e devono essere eliminati dall'utente oppure possono essere riutilizzati in operazioni di montaggio successive dopo che i metadati sono stati compilati nuovamente.

Sicurezza

Quando attivi la memorizzazione nella cache, Cloud Storage FUSE utilizza il valore cache-dir specificato impostato come directory sottostante affinché la cache memorizzi i file dal bucket Cloud Storage in formato non criptato. Qualsiasi utente o processo che ha accesso a questa directory della cache può accedere a questi file. Ti consigliamo di limitare l'accesso a questa directory.

Accesso diretto o multiplo alla cache dei file

L'utilizzo di un processo diverso da Cloud Storage FUSE per accedere o modificare un file nella directory della cache può causare il danneggiamento dei dati. Le cache di Cloud Storage FUSE sono specifiche per ciascun processo in esecuzione di Cloud Storage FUSE senza essere consapevoli dei vari processi di Cloud Storage FUSE in esecuzione sulla stessa macchina o su macchine diverse. Di conseguenza, la stessa directory della cache non deve essere utilizzata da processi di Cloud Storage FUSE diversi.

Se più processi di Cloud Storage FUSE devono essere eseguiti sulla stessa macchina, ogni processo di Cloud Storage FUSE dovrebbe avere la propria directory della cache specifica oppure utilizzare uno dei seguenti metodi per garantire che i dati non vengano danneggiati:

  • Monta tutti i bucket con una cache condivisa. Utilizza il montaggio dinamico per montare tutti i bucket a cui hai accesso in un unico processo con una cache condivisa. Per saperne di più, consulta Montaggio dinamico di Cloud Storage FUSE.

  • Abilita la memorizzazione nella cache in un bucket specifico: puoi abilitare la memorizzazione nella cache solo in un bucket specificato utilizzando il montaggio statico. Per ulteriori informazioni, consulta Montaggio statico di Cloud Storage FUSE.

  • Memorizza nella cache solo una cartella o una directory specifica: anziché montare un intero bucket, puoi utilizzare l'opzione –only-dir per montare e memorizzare nella cache solo una cartella specifica a livello di bucket. Per scoprire di più, consulta Montare una directory all'interno di un bucket.

Panoramica della memorizzazione nella cache delle statistiche

La cache delle statistiche di Cloud Storage FUSE è una cache per i metadati degli oggetti che migliora le prestazioni di operazioni specifiche degli attributi dei file come dimensioni, tempo di modifica o autorizzazioni. L'uso della cache delle statistiche migliora la latenza utilizzando i dati memorizzati nella cache per eseguire operazioni, anziché inviare una richiesta di oggetto statistiche a Cloud Storage. Per impostazione predefinita, la cache delle statistiche è abilitata con un valore stat-cache-max-size-mb di 32 MB e un valore ttl-secs impostato su 60 secondi. Ti consigliamo di aumentare entrambi i valori. Per scoprire di più sulla memorizzazione nella cache delle statistiche, consulta la documentazione sulla semantica su GitHub.

Panoramica dei tipi di memorizzazione nella cache

La cache di tipo Cloud Storage FUSE è una cache di metadati che accelera le prestazioni per le operazioni sui metadati specifiche dell'esistenza di file o directory. L'utilizzo della cache dei tipi migliora la latenza riducendo il numero di richieste inviate a Cloud Storage per verificare l'esistenza di un file o di una directory mediante l'archiviazione locale di queste informazioni. Per impostazione predefinita, la cache dei tipi è abilitata con un valore type-cache-max-size-mb di 4 MB e un valore ttl-secs di 60 secondi per impostazione predefinita. Ti consigliamo di aumentare entrambi i valori. Per scoprire di più sulla memorizzazione nella cache dei tipi, consulta la documentazione sulla semantica su GitHub.

Configurazione dell'annullamento della convalida della cache

Il campo ttl-secs consente di specificare per quanto tempo i metadati rimangono validi nelle cache di file, statistiche e tipi. Il campo rappresenta la durata (TTL) dei dati memorizzati nella cache, in cui i dati memorizzati nella cache vengono invalidati alla scadenza del TTL. Quando una voce di metadati non è più valida, viene eseguita una query di lettura successiva da Cloud Storage.

Puoi configurare ttl-secs in un file di configurazione di Cloud Storage FUSE.

Se specifichi un valore per ttl-secs maggiore di 0, i metadati per la cache del file rimangono validi solo per il periodo di tempo specificato. Per tutti i tipi di cache è impostato il valore predefinito 60. Per la memorizzazione nella cache di file, ti consigliamo di aumentare il valore ttl-secs in base al tempo previsto tra letture ripetute, bilanciando le esigenze di coerenza. In base all'importanza e alla frequenza della modifica dei dati, ti consigliamo di impostare il valore ttl-secs al massimo consentito dal tuo carico di lavoro.

Oltre a specificare un valore che rappresenta il numero di secondi, il flag ttl-secs supporta anche i valori 0 e -1.

  • Valore ttl-secs di 0: quando inserisci il valore 0, il flag ttl-secs garantisce che il file più aggiornato venga letto inviando una chiamata Get metadata a Cloud Storage che controlla il file da cui viene pubblicato per garantire che la cache sia coerente. Se il file nella cache è aggiornato, viene pubblicato direttamente dalla cache. Le prestazioni sono meno efficaci rispetto a quando specifichi un valore ttl-secs diverso da 0 perché è sempre necessario effettuare una chiamata a Cloud Storage per verificare prima i metadati. Se il file si trova nella cache e non è cambiato, il file viene fornito dalla cache con coerenza dopo la chiamata Get metadata.

  • Valore ttl-secs di -1: quando inserisci il valore -1, il file viene sempre letto dalla cache, se disponibile, senza verificare la coerenza. Gestire file senza controllare la coerenza può fornire dati incoerenti e deve essere utilizzato temporaneamente solo per i carichi di lavoro eseguiti in job con dati non modificabili. Ad esempio, l'utilizzo del valore -1 è utile per l'addestramento di machine learning, in cui gli stessi dati vengono letti in più epoche senza modifiche.

Percorso di lettura per i dati memorizzati nella cache

La cache di Cloud Storage FUSE accelera le letture ripetute dopo l'importazione nella cache. Sia le letture per la prima volta che i fallimenti della cache vanno direttamente a Cloud Storage e sono soggetti alle normali latenze di rete di Cloud Storage.

Considerazioni

  • L'utilizzo di Cloud Storage FUSE con memorizzazione nella cache di file, memorizzazione nella cache delle statistiche o memorizzazione nella cache dei tipi può aumentare le prestazioni ma ridurre la coerenza. Per scoprire di più, consulta la documentazione sulla semantica su GitHub.

  • Se una voce della cache di un file non è ancora scaduta in base al suo TTL e il file si trova nella cache, l'intera operazione viene gestita dalla cache del client locale senza che venga inviata alcuna richiesta a Cloud Storage.

  • Se una voce della cache di un file è scaduta in base al suo TTL, viene prima effettuata una chiamata Get metadata a Cloud Storage e, se il file non è nella cache, il file viene recuperato da Cloud Storage. Entrambe le operazioni sono soggette a latenze di rete. Se la voce di metadati è stata invalidata, ma il file si trova nella cache e la generazione degli oggetti non è cambiata, il file viene fornito dalla cache solo dopo la chiamata di recupero dei metadati per verificare se i dati sono validi.

  • Se un client Cloud Storage FUSE modifica un file memorizzato nella cache o i relativi metadati, il file viene immediatamente invalidato e la coerenza viene garantita nella lettura di quanto segue dallo stesso client. Tuttavia, se diversi client accedono allo stesso file o ai relativi metadati e le relative voci vengono memorizzate nella cache, viene letta la versione del file o dei metadati memorizzata nella cache e non la versione aggiornata finché il file non viene invalidato dall'impostazione TTL del client specifico.

Passaggi successivi