Panoramica della memorizzazione nella cache in Cloud Storage FUSE

Cloud Storage FUSE fornisce tre tipi di memorizzazione nella cache facoltativa per migliorare le prestazioni di recupero dei dati:

Panoramica della memorizzazione nella cache dei file

La cache di file di Cloud Storage FUSE è una cache di lettura basata su client che consente di pubblicare ripetizioni di file da uno spazio di archiviazione più veloce di tua scelta. La cache dei file è disattivata 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 in quanto pubblica le letture direttamente dal supporto della cache. Le operazioni di I/O piccole e casuali possono essere molto più veloci se gestite dalla cache.

  • Utilizza la 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 che ti vengano addebitati costi per spazio di archiviazione aggiuntivo. Sono inclusi gli SSD locali forniti in bundle con tipi di macchine per GPU Cloud come a2-ultragpu, a3-highgpu, Persistent Disk (che è il disco di avvio utilizzato da ogni VM) o /tmpfs in memoria.

  • Addebiti ridotti: gli hit della cache vengono pubblicati localmente e non comportano costi per le operazioni di Cloud Storage o per la rete.

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

Attivazione 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 della cache specificata che i dati memorizzati nella cache possono occupare impostando max-size-mb.

    Per impostazione predefinita, il campo max-size-mb è impostato sul valore -1, che consente di crescere i dati memorizzati nella cache finché non occupano tutta la capacità disponibile nella directory specificata come valore su cache-dir.

  • Puoi specificare una directory per l'archiviazione dei dati della cache dei file utilizzando il campo cache-dir. Tieni presente che 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 sul controllo dell'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 pagina Eliminazione.

Letture casuali e parziali

Se la prima operazione di lettura del file inizia dall'inizio del file, o dall'offset 0, la cache dei file di Cloud Storage FUSE importa e carica l'intero file nella cache, anche se stai leggendo solo da un sottoinsieme limitato di intervalli. In questo modo le letture casuali o parziali successive dello stesso oggetto vengono pubblicate direttamente dalla cache.

Se la prima operazione di lettura di un file parte da un punto diverso dall'offset 0, Cloud Storage FUSE, per impostazione predefinita, non attiva un recupero completo del file asincrono. Per modificare questo comportamento in modo che Cloud Storage FUSE importi un file nella cache al momento di 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 sullo stesso oggetto vengono eseguite molte operazioni di lettura casuale o parziale diverse.

Sfrazione

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

Prestazioni

La memorizzazione nella cache di Cloud Storage FUSE funziona con qualsiasi directory specificata dall'utente supportata dalla tua scelta di archiviazione, come 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 scoprire 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 durante le operazioni di smontaggio e si riavviano quando tutte le voci di metadati vengono rimosse. Tuttavia, i dati nella cache dei file non vengono eliminati e devono essere eliminati dall'utente oppure possono essere riutilizzati in operazioni di montaggio successive una volta che i metadati sono stati compilati nuovamente.

Sicurezza

Quando attivi la memorizzazione nella cache, Cloud Storage FUSE utilizza il valore cache-dir specificato che hai impostato come directory sottostante per consentire alla cache di mantenere i file del bucket Cloud Storage in formato non criptato. Qualsiasi utente o processo che abbia 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 a un file nella directory della cache o modificarlo può danneggiare i dati. Le cache di Cloud Storage FUSE sono specifiche per ogni processo in esecuzione di Cloud Storage FUSE, senza consapevolezza nei diversi processi di Cloud Storage FUSE in esecuzione sulla stessa macchina o su macchine diverse. Di conseguenza, la stessa directory della cache non dovrebbe essere utilizzata da diversi processi di Cloud Storage FUSE.

Se più processi di Cloud Storage FUSE devono essere eseguiti sulla stessa macchina, ogni processo di Cloud Storage FUSE deve 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 singolo processo con una cache condivisa. Per saperne di più, consulta la pagina relativa al montaggio dinamico di Cloud Storage FUSE.

  • Abilita la memorizzazione nella cache su un bucket specifico: puoi abilitare la memorizzazione nella cache solo su un bucket specificato utilizzando il montaggio statico. Per scoprire di più, consulta Montaggio statico di Cloud Storage FUSE.

  • Memorizza nella cache solo una cartella o 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 Installare 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 per operazioni specifiche per 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 le operazioni anziché inviare una richiesta di oggetto stat 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 di 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 della memorizzazione nella cache dei tipi

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 di type cache migliora la latenza riducendo il numero di richieste effettuate a Cloud Storage per verificare l'esistenza di un file o di una directory archiviando queste informazioni localmente. Per impostazione predefinita, la cache dei tipi è abilitata con un valore type-cache-max-size-mb di 4 MB e un valore di ttl-secs di 60 secondi. Ti consigliamo di aumentare entrambi i valori. Per scoprire di più sulla memorizzazione nella cache dei tipi, consulta la documentazione semantica su GitHub.

Configurazione dell'annullamento della convalida della cache

Il campo ttl-secs consente di specificare per quanto tempo i metadati rimangono validi nella cache dei file. 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, vengono eseguite query sulle letture successive da Cloud Storage.

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

Quando specifichi un valore per ttl-secs maggiore di 0, i metadati per la cache dei file rimangono validi solo per il periodo di tempo specificato. Il valore predefinito di 60 è impostato per tutti i tipi di cache. Per la memorizzazione nella cache dei file, ti consigliamo di aumentare il valore ttl-secs in base al tempo previsto tra le 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 sul valore massimo consentito dal 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 di quando specifichi un valore ttl-secs diverso da 0 perché è necessario effettuare sempre una chiamata a Cloud Storage per verificare prima i metadati. Se il file si trova nella cache e non è stato modificato, il file viene pubblicato dalla cache in modo coerente dopo la chiamata Ottieni metadati.

  • Valore ttl-secs pari a -1: se inserisci il valore -1, il file viene sempre letto dalla cache, se disponibile, senza verificare la coerenza. I file per la pubblicazione senza verificare la coerenza possono fornire dati incoerenti e devono essere utilizzati solo temporaneamente per carichi di lavoro eseguiti in job con dati che non cambiano. Ad esempio, l'utilizzo di un 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 prime letture che i fallimenti della cache passano direttamente a Cloud Storage e sono soggetti alle normali latenze di rete di Cloud Storage.

Considerazioni

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

  • Se una voce relativa alla cache dei file non è ancora scaduta in base al relativo TTL e il file si trova nella cache, l'intera operazione viene fornita dalla cache del client locale senza che alcuna richiesta venga inviata a Cloud Storage.

  • Se una voce della cache del file è scaduta in base al relativo TTL, viene effettuata prima una chiamata Get metadata a Cloud Storage. 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 dei metadati è stata invalidata, ma il file si trova nella cache e la generazione dell'oggetto non è cambiata, il file viene pubblicato dalla cache solo dopo che viene effettuata la chiamata Get metadata 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 assicurata come segue durante la lettura dallo stesso client. Tuttavia, se client diversi accedono allo stesso file o ai relativi metadati e le relative voci vengono memorizzate nella cache, la versione memorizzata nella cache del file o dei metadati viene letta e non la versione aggiornata fino a quando il file non viene invalidato dall'impostazione TTL di quel client specifico.

Passaggi successivi