Panoramica della memorizzazione nella cache in Cloud Storage FUSE

Cloud Storage FUSE fornisce quattro tipi di memorizzazione nella cache facoltativa per contribuire ad aumentare le prestazioni del recupero dei dati:

Panoramica della memorizzazione nella cache dei file

La cache dei file di Cloud Storage FUSE è una cache di lettura basata su client che pubblica legge il file da uno spazio di archiviazione cache più rapido di tua scelta.

Vantaggi della memorizzazione nella cache dei file

  • Miglioramento delle prestazioni: la memorizzazione nella cache dei file migliora la latenza e la produttività in quanto le letture vengono eseguite direttamente dai media della cache. Operazioni di I/O piccole e casuali possono essere molto più veloci se provengono dalla cache.

  • Utilizza la capacità esistente: la memorizzazione nella cache dei file può utilizzare la macchina esistente di cui è stato eseguito il provisioning per la directory della cache senza dover sostenere costi aggiuntivi archiviazione. Sono incluse le unità SSD locali fornite in bundle con i tipi di macchine Cloud GPU come a2-ultragpu, a3-highgpu, disco permanente (ovvero il disco di avvio utilizzato da ogni VM) o /tmpfs in-memory.

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

  • Miglioramento del costo totale di proprietà per l'addestramento di IA e ML: la memorizzazione nella cache dei file aumenta l'utilizzo di GPU Cloud e Cloud TPU caricando i dati più velocemente, il che riduce i tempi di addestramento e offre un rapporto prezzo/prestazioni migliore per i carichi di lavoro di addestramento di IA e ML.

Abilita e configura la cache dei file

La cache dei file è disattivata per impostazione predefinita e può essere attivata e configurata utilizzando un file di configurazione di Cloud Storage FUSE. Puoi controllare la memorizzazione nella cache utilizzando i seguenti campi:

  • max-size-mb: controlla la capacità massima della directory della cache che possono occupare i dati memorizzati nella cache. Per impostazione predefinita, il campo max-size-mb è impostato i dati memorizzati nella cache aumentano fino a occupare tutta la capacità disponibile .

  • cache-dir: specifica una directory per l'archiviazione dei dati della cache dei file. Tieni presente che la specifica di una directory della cache è un prerequisito per l'abilitazione della cache dei file.

  • ttl-secs: determina quando i dati memorizzati nella cache diventano obsoleti e devono essere aggiornato da Cloud Storage. Per impostazione predefinita, il campo ttl-secs è impostato su scade e si aggiorna da Cloud Storage dopo 60 secondi di inattività. Ti consigliamo di aumentare questo valore.

    Per scoprire come controllare l'annullamento della convalida dei dati della cache, consulta Configurare l'annullamento della convalida dei dati della cache. Per ulteriori informazioni l'eliminazione dei dati memorizzati nella cache, consulta Rimozione.

  • enable-parallel-downloads: accelera le prestazioni di lettura per i file di grandi dimensioni superiori a 1 GB, incluse le letture iniziali, utilizzando più worker per scaricare un file in parallelo utilizzando la directory della cache dei file come buffer di prefetch. Ti consigliamo di attivare le funzionalità per le operazioni di pubblicazione e ripristino dei checkpoint. Per ulteriori informazioni sull'attivazione e la configurazione dei download paralleli, consulta Configurare i download paralleli.

Casuale e Letture parziali

Se la prima operazione di lettura del file inizia dall'inizio del file, nel offset 0, la cache del file Cloud Storage FUSE importa e carica l'intero file nella cache, anche se leggi solo da un sottoinsieme ridotto di intervalli. Questo consente la pubblicazione di 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, Per impostazione predefinita, Cloud Storage FUSE non attiva il recupero asincrono del file completo. Per modificare questo comportamento in modo che Cloud Storage FUSE importi un file in cache dopo una lettura casuale iniziale, imposta cache-file-for-range-read per true. Ti consigliamo di attivare il cache-file-for-range-read flag se vengono eseguite molte operazioni di lettura casuali o parziali diverse sullo stesso oggetto.

Eliminazione

L'espulsione dei metadati e dei dati memorizzati nella cache si basa su un algoritmo LRU (Least Recently Used, meno di recente utilizzo) che inizia quando viene raggiunta la soglia di spazio configurata per il limite max-size-mb. Se la voce scade in base al relativo TTL, viene prima effettuata una chiamata Get metadata a Cloud Storage ed è soggetta alle latenze della rete. Poiché i dati e i metadati vengono gestiti separatamente, è possibile che un'entità venga espulsa o invalidata e non l'altra.

Persistenza

Le cache di Cloud Storage FUSE non vengono conservate durante lo smontaggio e i riavvii. Per la memorizzazione nella cache dei file, anche se le voci dei metadati necessarie per servire i file dalla cache vengono espulse durante lo smontaggio e i riavvii, i dati nella cache dei file potrebbero essere ancora presenti nella directory dei file. Devi eliminare i dati nella directory della cache dei file dopo lo smontaggio o il riavvio.

Sicurezza

Quando attivi la memorizzazione nella cache, Cloud Storage FUSE utilizza la directory della cache specificata utilizzando il campo cache-dir come directory di base per la memorizzazione nella cache per mantenere i file del bucket Cloud Storage in un 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

Utilizzo di un processo diverso da Cloud Storage FUSE per accedere o modificare un file nella la directory della cache può danneggiare i dati. Le cache di Cloud Storage FUSE sono specifiche per ogni processo in esecuzione di Cloud Storage FUSE e non sono consapevoli dei diversi processi di Cloud Storage FUSE in esecuzione sulla stessa o su macchine diverse. Pertanto, non consigliamo di utilizzare la stessa directory della cache per diversi processi FUSE Cloud Storage.

Se è necessario eseguire più processi Cloud Storage FUSE sulla stessa macchina, ogni processo deve avere la propria directory cache specifica o utilizzare uno dei seguenti metodi per assicurarsi che i dati non vengano danneggiati:

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

  • Attiva la memorizzazione nella cache in un bucket specifico: attiva la memorizzazione nella cache solo in un bucket specificato utilizzando il montaggio statico. Per saperne di più, vedi Montaggio statico di Cloud Storage FUSE.

  • Memorizza nella cache solo una cartella o una directory specifica: monta e memorizza nella cache solo una cartella a livello di bucket specifica anziché montare un intero bucket. Per apprendere vedi 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 il rendimento per operazioni specifiche di attributi dei file come dimensioni, data e ora di modifica o autorizzazioni. L'utilizzo della cache delle statistiche migliora la latenza utilizzando memorizzati nella cache per eseguire operazioni anziché inviare una richiesta di oggetto stat di archiviazione ideale in Cloud Storage. Per saperne di più sulla memorizzazione nella cache delle statistiche, consulta Documentazione relativa alla semantica su GitHub.

La cache delle statistiche è abilitata per impostazione predefinita e può essere configurata utilizzando un File di configurazione di Cloud Storage FUSE. La dimensione massima della cache è controllato dal campo stat-cache-max-size-mb, che ha un valore predefinito 32 (32 MB). Il TTL della cache è controllato dal campo ttl-secs, che ha un valore predefinito di 60 (60 secondi).

Best practice

Per la memorizzazione nella cache delle statistiche, ti consigliamo di utilizzare il valore predefinito 32 per il stat-cache-max-size-mb campo se il tuo carico di lavoro prevede fino a 20.000 file. Se il carico di lavoro supera i 20.000 file, aumenta il stat-cache-max-size-mb di 10 per ogni 6000 file aggiuntivi, circa 1500 byte per file.

stat-cache-max-size-mb è un limite a livello di montaggio e l'utilizzo effettivo della memoria potrebbe essere inferiore al valore specificato. In alternativa, puoi impostare stat-cache-max-size-mb su -1 per consentire alla cache delle statistiche di utilizzare tutta la memoria necessaria.

Panoramica dei tipi di memorizzazione nella cache

La cache di tipo FUSE di Cloud Storage è una cache dei metadati che accelera le prestazioni per le operazioni sui metadati specifiche per l'esistenza di file o directory. Utilizzo del tipo di cache migliora la latenza riducendo il numero di richieste inviate Cloud Storage per verificare l'esistenza di un file o di una directory archiviando questo informazioni a livello locale. Per scoprire di più sulla memorizzazione nella cache dei tipi, consulta la documentazione sulla semantica su GitHub.

Il tipo di cache è abilitato per impostazione predefinita e può essere configurato utilizzando un File di configurazione di Cloud Storage FUSE. La dimensione massima della cache è controllata dal campo type-cache-max-size-mb, che ha un valore predefinito di 4 (4 MB). Il TTL della cache è controllato dal campo ttl-secs, che ha un valore predefinito di 60 (60 secondi).

Best practice

Per la memorizzazione nella cache dei tipi, ti consigliamo di utilizzare il valore predefinito 4 per il campo type-cache-max-size-mb se il numero massimo di file all'interno di un'unica directory del bucket che stai montando non supera i 20.000 file. Se il numero massimo di file all'interno di un'unica directory che stai montando contiene più di 20.000 file, aumenta il valore type-cache-max-size-mb di 1 per ogni 5000 file, ovvero circa 200 byte per file.

type-cache-max-size-mb è un limite a livello di montaggio e l'utilizzo effettivo della memoria potrebbe essere inferiore al valore specificato. In alternativa, puoi impostare il valore type-cache-max-size-mb su -1 per consentire alla cache dei tipi di utilizzare la memoria necessaria.

Panoramica della memorizzazione nella cache dell'elenco

La cache dell'elenco di Cloud Storage FUSE è destinata all'elenco di directory e file o ls, risposte che migliorano la velocità delle operazioni degli elenchi. La memorizzazione nella cache degli elenchi è particolarmente utile per carichi di lavoro che ripetono l'elenco completo delle directory durante l'esecuzione, come le esecuzioni di addestramento AI/ML.

La cache dell'elenco viene mantenuta nella cache della pagina, controllata dal basato sulla disponibilità di memoria, anziché sulle cache stat e type, che vengono conservati nella memoria della macchina e controllati da Cloud Storage FUSE.

Attivare la memorizzazione nella cache degli elenchi

La cache dell'elenco è disattivata per impostazione predefinita. Puoi abilitare la memorizzazione nella cache degli elenchi utilizzando Campo kernel-list-cache-ttl-secs con uno dei seguenti valori:

  • Un valore positivo che rappresenta la durata (TTL) in secondi da conservare la risposta dell'elenco di directory nella cache della pagina del kernel.

  • Un valore -1 per ignorare la scadenza della voce e restituire la risposta dell'elenco dalla cache quando è disponibile.

Per attivare e configurare la memorizzazione nella cache degli elenchi, consulta il file di configurazione di Cloud Storage FUSE.

Configurare l'annullamento della convalida della cache

Le seguenti sezioni descrivono come configurare l'annullamento della convalida della cache per tutti tipi di cache.

Annullamento convalida cache di file, statistiche e tipo

Per le cache di file, statistiche e tipo, il campo ttl-secs specifica il TTL in secondi per il periodo di tempo durante il quale i metadati memorizzati nella cache vengono utilizzati dal momento in cui vengono recuperati da Cloud Storage fino alla scadenza e alla necessità di aggiornarli.

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

Il campo ttl-secs è impostato su 60 per impostazione predefinita. Se specifichi un valore per ttl-secs maggiore di 0, i metadati per la cache del file rimane valida solo per il tempo specificato. Per la memorizzazione nella cache di file, consigliamo di aumentare il valore ttl-secs in base al il tempo previsto tra una lettura ripetuta e l'altra per bilanciare le esigenze di coerenza. In base all'importanza e alla frequenza di modifica dei dati, ti consigliamo impostando il valore ttl-secs al massimo consentito dal tuo carico di lavoro. Quando voce di metadati non è più valida, viene eseguita una query sulle letture successive da di archiviazione ideale in Cloud Storage.

Oltre ad accettare valori che rappresentano un TTL specifico secondi prima che i metadati memorizzati nella cache scadano e debbano essere aggiornati, puoi utilizzare i seguenti valori per specificare la modalità di lettura del file:

  • Valore ttl-secs di 0: garantisce che il file con i dati più aggiornati venga letto inviando una chiamata di metadati GET a Cloud Storage che controlla il file da cui viene eseguito il servizio per garantire la coerenza della cache. Se il file nella cache è aggiornato, viene pubblicato direttamente dalla cache. La specifica di un valore diverso da 0 può comportare un calo delle prestazioni perché è sempre necessario effettuare una chiamata a Cloud Storage per controllare prima i metadati. Se il file è nella cache e non è stato modificato, viene pubblicato dalla cache in modo coerente dopo la chiamata ai metadati GET.

  • Valore ttl-secs di -1: garantisce che il file venga sempre letto dalla cache se disponibili, senza verificare la coerenza. File disponibili per la pubblicazione senza la verifica della coerenza può generare dati incoerenti e dovrebbe essere utilizzata temporaneamente per i carichi di lavoro eseguiti in job con dati che non cambiano. Per ad esempio, l'utilizzo del valore -1 è utile per l'addestramento del machine learning, dove gli stessi dati vengono letti in più epoche senza modifiche.

Elenca l'annullamento della convalida della cache

L'invalidazione della cache dell'elenco viene impostata specificando un valore maggiore di 0 utilizzando il campo kernel-list-cache-ttl-secs. La risposta dell'elenco di directory viene conservata nella cache della pagina del kernel e rimane valida per il periodo di tempo specificato. Per impostazione predefinita, la cache dell'elenco è disattivata e impostata sul valore 0. Quando specifica il valore -1, Cloud Storage FUSE disabilita la scadenza della cache dell'elenco e restituisce la risposta "list" dalla cache quando è disponibile.

Percorso di lettura per i dati memorizzati nella cache

La cache Cloud Storage FUSE accelera le letture ripetute dopo che sono state importate nella cache. Sia le letture iniziali sia le mancate corrispondenze della cache vengono inviate direttamente a Cloud Storage e sono soggette alle normali latenze di rete di Cloud Storage. Per migliorare le prestazioni di lettura la prima volta, consulta Migliorare le letture la prima volta.

Considerazioni

  • È possibile abilitare la memorizzazione nella cache di file, la memorizzazione nella cache delle statistiche, il tipo o la memorizzazione nella cache di un elenco Aumentare le prestazioni ma ridurre la coerenza, cosa che di solito si verifica quando accedi allo stesso bucket utilizzando più client con un un tasso di variazione elevato. Per ridurre l'impatto sulla coerenza, ti consigliamo montare bucket in sola lettura. Per scoprire di più sul comportamento della memorizzazione nella cache, consulta Documentazione sulla semantica di Cloud Storage FUSE su GitHub.

  • Se una voce della cache di file non è ancora scaduta in base al relativo TTL e il file è 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 dei file è scaduta in base al relativo TTL, viene prima eseguita una chiamata Get metadata a Cloud Storage e, se il file non è nella cache, viene recuperato da Cloud Storage. Entrambe le operazioni sono soggette alle latenze della rete. Se la voce dei metadati è stata invalidata, ma il file è nella cache e la generazione dell'oggetto non è cambiata, il file viene visualizzato dalla cache solo dopo che è stata effettuata la chiamata Get metadata per verificare se i dati sono validi.

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

  • Per evitare il thrashing della cache, assicurati che l'intero set di dati rientri nella capacità della cache. Inoltre, tieni conto della capacità massima e delle prestazioni che i tuoi media della cache possono fornire. Se raggiungi le prestazioni massime, il limite di capacità o entrambi della cache di cui è stato eseguito il provisioning, è consigliabile leggere direttamente da Cloud Storage, che ha limiti molto più elevati rispetto a Cloud Storage FUSE.

Passaggi successivi