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 Cloud Storage FUSE è una cache di lettura basata su client che serve letture ripetute dei file da uno spazio di archiviazione della cache più veloce a tua scelta.
Vantaggi della memorizzazione nella cache dei file
Miglioramento delle prestazioni: la memorizzazione nella cache dei file migliora la latenza e la velocità di trasmissione dei dati in quanto le letture vengono eseguite direttamente dai media della cache. Le operazioni di I/O piccole e casuali possono essere notevolmente più veloci se pubblicate 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 costi aggiuntivi per lo spazio di archiviazione. Sono incluse le unità SSD locali fornite in bundle con i tipi di macchine Cloud GPU come
a2-ultragpu
,a3-highgpu
, Persistent Disk (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 AI e ML.
Attivare e configurare la cache dei file
La cache dei file è disabilitata per impostazione predefinita e può essere attivata e configurata utilizzando un file di configurazione di Cloud Storage FUSE. Puoi controllare il comportamento della 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 campomax-size-mb
è impostato per consentire la crescita dei dati memorizzati nella cache fino a quando non occupano tutta la capacità disponibile nella directory della cache.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 attivare la cache dei file.ttl-secs
: determina quando i dati memorizzati nella cache diventano obsoleti e devono essere aggiornati da Cloud Storage. Per impostazione predefinita, il campottl-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 sull'espulsione dei dati memorizzati nella cache, consulta Espulsione.
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. Consigliamo di attivare i download paralleli per le operazioni di pubblicazione e ripristino dei checkpoint. Per ulteriori informazioni su come attivare e configurare i download paralleli, consulta Configurare i download paralleli.
Letture casuali e parziali
Se la prima operazione di lettura del file inizia dall'inizio del file, all'offset 0
, la cache dei file Cloud Storage FUSE acquisisce e carica l'intero file nella cache, anche se stai leggendo solo da un sottoinsieme di intervalli ridotti. In questo modo, le letture successive casuali o parziali dello stesso oggetto vengono servite direttamente dalla cache.
Se la prima operazione di lettura di un file inizia da un punto diverso dall'offset 0
, per impostazione predefinita Cloud Storage FUSE non attiva il recupero completo del file in modo 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 attivare il cache-file-for-range-read
flag se vengono eseguite molte operazioni di lettura casuali o parziali diverse sullo stesso oggetto.
Sfratto
L'espulsione dei metadati e dei dati memorizzati nella cache si basa su un algoritmo LRU (Least Recently Used, meno di recente utilizzato) 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 cache per
memorizzare i file del bucket Cloud Storage in un 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 o modificare un file nella directory della cache può causare la corruzione dei 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 una propria directory cache specifica o utilizzare uno dei seguenti metodi per assicurarsi 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'unica operazione 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ù, consulta 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 saperne di più, vedi Montare una directory all'interno di un bucket.
Panoramica della memorizzazione nella cache delle statistiche
La cache delle statistiche FUSE di Cloud Storage è una cache per i metadati degli oggetti che migliora le prestazioni per le operazioni specifiche degli attributi dei file, come dimensioni, data di modifica o autorizzazioni. L'utilizzo della cache delle statistiche migliora la latenza utilizzando i dati memorizzati nella cache per eseguire operazioni anziché inviare una richiesta di oggetto statistico a Cloud Storage. Per scoprire di più sulla memorizzazione nella cache delle statistiche, consulta la documentazione di Semantics su GitHub.
La cache delle statistiche è abilitata per impostazione predefinita e può essere configurata utilizzando un
file di configurazione Cloud Storage FUSE. La dimensione massima della cache è controllata dal campo stat-cache-max-size-mb
, che ha un valore predefinito di 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 tuo carico di lavoro è costituito da più di 20.000 file, aumenta il valore stat-cache-max-size-mb
di 10 per ogni 6000 file aggiuntivi, ovvero circa 1500 byte per file.
stat-cache-max-size-mb
è un limite a livello di mount 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 della memorizzazione nella cache dei tipi
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. L'utilizzo della cache di tipo migliora la latenza riducendo il numero di richieste inviate a Cloud Storage per verificare se esiste un file o una directory archiviando queste informazioni localmente. Per scoprire di più sulla memorizzazione nella cache dei tipi, consulta la documentazione di Semantics su GitHub.
La cache dei tipi è abilitata per impostazione predefinita e può essere configurata utilizzando un
file di configurazione 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
type-cache-max-size-mb
campo se il numero massimo di file all'interno di un'unica
directory del bucket che stai montando contiene massimo 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, 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 degli elenchi
La cache dell'elenco di Cloud Storage FUSE è destinata alle risposte ls
per directory ed elenchi di file che migliorano le velocità di operazione dell'elenco. La memorizzazione nella cache degli elenchi è particolarmente utile per i carichi di lavoro che ripetono le schede complete delle directory durante l'esecuzione, come le esecuzioni di addestramento AI/ML.
La cache delle liste viene mantenuta in memoria nella cache delle pagine, che è controllata dal kernel in base alla disponibilità della memoria, a differenza delle cache di statistiche e tipi, che vengono mantenute nella memoria della macchina e controllate da Cloud Storage FUSE.
Attivare la memorizzazione nella cache degli elenchi
La cache dell'elenco è disattivata per impostazione predefinita.
Puoi attivare la memorizzazione nella cache dell'elenco utilizzando il
campo kernel-list-cache-ttl-secs
con uno dei seguenti valori:
Un valore positivo che rappresenta la durata (TTL) in secondi per mantenere 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 sezioni seguenti descrivono come configurare l'invalidazione della cache per tutti i tipi di cache.
Annullamento della convalida della cache di file, statistiche e tipi
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.
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.
Per la memorizzazione nella cache dei file, ti consigliamo di aumentare il valore ttl-secs
in base al tempo previsto tra le letture ripetute, rispettando al contempo le esigenze di coerenza.
In base all'importanza e alla frequenza della modifica dei dati, ti consigliamo di impostare il valore ttl-secs
il più alto possibile in base al tuo carico di lavoro. Quando una voce dei metadati diventa non valida, le letture successive vengono sottoposte a query da Cloud Storage.
Oltre ad accettare valori che rappresentano un TTL specifico in 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
di0
: garantisce che il file con i dati più aggiornati venga letto inviando una chiamata di metadatiGET
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 da0
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 metadatiGET
.Valore
ttl-secs
di-1
: garantisce che il file venga sempre letto dalla cache se è disponibile, senza verificare la coerenza. La pubblicazione di file senza verificare la coerenza può comportare la pubblicazione di dati incoerenti e deve essere utilizzata solo temporaneamente per i carichi di lavoro eseguiti in job con dati invariati. Ad esempio, l'utilizzo di un valore-1
è utile per l'addestramento del machine learning, in cui 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 su un valore 0
. Quando specifichi un valore -1
, Cloud Storage FUSE disattiva la scadenza della cache dell'elenco e restituisce la risposta dell'elenco dalla cache quando è disponibile.
Leggi il percorso 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
L'attivazione della memorizzazione nella cache dei file, della memorizzazione nella cache delle statistiche, della memorizzazione nella cache dei tipi o della memorizzazione nella cache degli elenchi può aumentare il rendimento, ma ridurre la coerenza, che in genere si verifica quando accedi allo stesso bucket utilizzando più client con un elevato tasso di modifica. Per ridurre l'impatto sulla coerenza, consigliamo di montare i bucket come di sola lettura. Per scoprire di più sul comportamento della cache, consulta la documentazione sulla semantica di Cloud Storage FUSE su GitHub.
Se una voce della cache dei file non è ancora scaduta in base al relativo TTL e il file è nella cache, l'intera operazione viene eseguita 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 eseguita 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
Scopri come utilizzare e configurare la memorizzazione nella cache dei file.
Scopri di più su come migliorare le prestazioni di lettura e scrittura.