Questo documento fornisce una panoramica della memorizzazione nella cache dei file di Cloud Storage FUSE e istruzioni su come configurare e utilizzare la memorizzazione nella cache dei file.
La memorizzazione nella cache dei file di Cloud Storage FUSE è una cache di lettura lato client che migliora le prestazioni delle operazioni di lettura gestendo le letture ripetute dei file da un archivio cache più veloce a tua scelta. Quando la memorizzazione nella cache dei file è abilitata, Cloud Storage FUSE archivia localmente copie dei file a cui si accede di frequente, consentendo di servire le letture successive direttamente dalla cache, il che riduce la latenza e migliora la velocità effettiva.
Vantaggi della memorizzazione nella cache dei file
La memorizzazione nella cache dei file offre i seguenti vantaggi:
Prestazioni migliorate per I/O piccoli e casuali: la memorizzazione nella cache dei file migliora la latenza e il throughput servendo le letture direttamente dai supporti della cache. Le operazioni I/O piccole e casuali possono essere notevolmente più veloci se gestite dalla cache.
Download paralleli attivati automaticamente: i download paralleli vengono attivati automaticamente su Cloud Storage FUSE versione 2.12 e successive quando la cache dei file è abilitata. I download paralleli utilizzano più worker per scaricare un file in parallelo utilizzando la directory della cache dei file come buffer di precaricamento, il che può comportare un tempo di caricamento del modello fino a nove volte più veloce. Ti consigliamo di utilizzare i download paralleli per scenari di lettura a thread singolo che caricano file di grandi dimensioni come il servizio di modelli e i ripristini dei checkpoint.
Utilizzo della 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 incorrere in addebiti per spazio di archiviazione aggiuntivo. Sono inclusi gli SSD locali forniti in bundle con i tipi di macchine Cloud GPU, come
a2-ultragpu
,a3-highgpu
, Persistent Disk (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 operazioni o rete di Cloud Storage.
Miglioramento del costo totale di proprietà per l'addestramento di AI e ML: la memorizzazione nella cache dei file aumenta l'utilizzo di GPU Cloud e Cloud TPU caricando i dati più rapidamente, il che riduce il tempo di addestramento e offre un rapporto prezzo/prestazioni migliore per i carichi di lavoro di addestramento di intelligenza artificiale e machine learning (AI/ML).
Download paralleli
I download paralleli possono migliorare le prestazioni di lettura utilizzando più worker per scaricare più parti di un file in parallelo utilizzando la directory della cache dei file come buffer di precaricamento. Consigliamo di utilizzare i download paralleli per gli scenari di lettura che caricano file di grandi dimensioni, come la pubblicazione di modelli, i ripristini dei checkpoint e l'addestramento su oggetti di grandi dimensioni.
I casi d'uso per l'attivazione della memorizzazione nella cache dei file con download paralleli includono quanto segue:
Tipo di caso d'uso | Descrizione |
---|---|
Formazione | Abilita la memorizzazione nella cache dei file se i dati a cui vuoi accedere vengono letti più volte, che si tratti dello stesso file più volte o di offset diversi dello stesso file. Se il set di dati è più grande della cache dei file, la cache dei file deve rimanere disattivata e devi utilizzare uno dei seguenti metodi: |
Letture dei pesi del modello e dei checkpoint di pubblicazione | Attiva la memorizzazione nella cache dei file con download paralleli per poter utilizzare i download paralleli, che caricano i file di grandi dimensioni molto più velocemente rispetto a quando non vengono utilizzati la memorizzazione nella cache dei file e i download paralleli. |
Considerazioni
Durata (TTL) della cache dei file: se una voce della cache dei file non è ancora scaduta in base al relativo TTL e il file si trova nella cache, le operazioni di lettura del file vengono eseguite dalla cache client locale senza che venga emessa alcuna richiesta a Cloud Storage.
Scadenza della voce della cache dei file: se una voce della cache dei file è scaduta, viene prima effettuata una chiamata degli attributi del file
GET
a Cloud Storage. Se il file non è presente o i suoi attributi o contenuti sono cambiati, vengono recuperati i nuovi contenuti. Se gli attributi sono stati solo invalidati, ma i contenuti rimangono validi, il che significa che la generazione di oggetti non è cambiata, i contenuti vengono pubblicati dalla cache solo dopo che la chiamata all'attributo ne conferma la validità. Entrambe le operazioni comportano latenze di rete.Invalidazione della cache dei file: quando un client Cloud Storage FUSE modifica un file memorizzato nella cache o i relativi attributi, la voce della cache del client viene immediatamente invalidata per garantire la coerenza. Tuttavia, gli altri client che accedono allo stesso file continuano a leggere le versioni memorizzate nella cache finché le impostazioni TTL individuali non causano un' invalidazione.
Dimensioni del file e capacità disponibile: il file letto deve rientrare nella capacità disponibile nella directory della cache dei file, che può essere controllata utilizzando l'opzione
--file-cache-max-size-mb
o il campofile-cache:max-size-mb
.Rimozione dalla cache: la rimozione dei metadati e dei dati memorizzati nella cache si basa su un algoritmo LRU (Least Recently Used) che inizia una volta raggiunto il limite di spazio configurato per il limite
--file-cache-max-size-mb
. Se la voce scade in base al TTL, viene prima effettuata una chiamata ai metadatiGET
a Cloud Storage ed è soggetta a latenze di rete. Poiché i dati e i metadati vengono gestiti separatamente, potresti riscontrare l'espulsione o l'invalidazione di un'entità e non dell'altra.Persistenza della cache: le cache di Cloud Storage FUSE non vengono mantenute durante lo smontaggio e i riavvii. Per la memorizzazione nella cache dei file, mentre le voci di metadati necessarie per pubblicare i file dalla cache vengono eliminate durante lo smontaggio e il riavvio, i dati nella cache dei file potrebbero essere ancora presenti nella directory dei file. Ti consigliamo di eliminare i dati nella directory della cache dei file dopo lo smontaggio o il riavvio.
Gestione della lettura casuale e parziale: quando la prima operazione di lettura del file inizia dall'inizio del file, all'offset
0
, la cache dei file Cloud Storage FUSE inserisce e carica l'intero file nella cache, anche se stai leggendo solo da un piccolo sottoinsieme di intervallo. In questo modo, le letture casuali o parziali successive dello stesso oggetto vengono servite direttamente dalla cache.Per impostazione predefinita, la lettura da qualsiasi altro offset non attiva un recupero asincrono dell'intero file. Per modificare questo comportamento in modo che Cloud Storage FUSE inserisca un file nella cache in seguito a una lettura casuale iniziale, imposta l'opzione
--file-cache-cache-file-for-range-read
o il campofile-cache:cache-file-for-range-read
sutrue
.Ti consigliamo di attivare questa proprietà se vengono eseguite molte operazioni di lettura casuali o parziali diverse sullo stesso oggetto.
Sicurezza dei dati: quando abiliti la memorizzazione nella cache, Cloud Storage FUSE utilizza la directory della cache specificata utilizzando l'opzione
--cache-dir
o il campocache-dir
come directory sottostante per la persistenza della cache dei file del bucket Cloud Storage in un formato 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 ogni processo di Cloud Storage FUSE in esecuzione e non sono condivise tra diversi processi di Cloud Storage FUSE in esecuzione sulla stessa macchina o su macchine diverse. Pertanto, non è consigliabile utilizzare la stessa directory della cache per processi Cloud Storage FUSE diversi.
Esecuzione di più processi Cloud Storage FUSE sulla stessa macchina: se è necessario eseguire più processi Cloud Storage FUSE sulla stessa macchina, ogni processo Cloud Storage FUSE deve avere la propria directory della cache specifica o 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 su un bucket specifico: abilita la memorizzazione nella cache solo su un bucket specificato utilizzando il montaggio statico. Per saperne di più, consulta la pagina Montaggio statico di Cloud Storage FUSE.
Memorizza nella cache solo una cartella o una directory specifica: monta e memorizza nella cache solo una cartella specifica a livello di bucket anziché montare un intero bucket. Per saperne di più, vedi Montare una directory all'interno di un bucket.
Prima di iniziare
La cache dei file richiede un percorso della directory da utilizzare per memorizzare i file nella cache. Puoi creare una nuova directory su un file system esistente o creare un nuovo file system sullo spazio di archiviazione di cui è stato eseguito il provisioning. Se stai eseguendo il provisioning di un nuovo spazio di archiviazione da utilizzare, segui queste istruzioni per creare un nuovo file system:
Per Google Cloud Hyperdisk, consulta Crea un nuovo volume Google Cloud Hyperdisk.
Per Persistent Disk, consulta Crea un nuovo volume su Persistent Disk.
Per le unità SSD locali, consulta Aggiungi un'unità SSD locale alla VM.
Per i dischi RAM in memoria, vedi Creazione di dischi RAM in memoria.
Attivare e configurare il comportamento di memorizzazione nella cache dei file
Seleziona il metodo tramite il quale vuoi attivare e configurare la memorizzazione nella cache dei file utilizzando uno dei seguenti metodi:
Forniscilo come valore per un'opzione
gcsfuse
Specificalo in un file di configurazione di Cloud Storage FUSE.
Specifica la directory della cache che vuoi utilizzare con uno dei seguenti metodi. In questo modo puoi attivare la cache dei file per i deployment non Google Kubernetes Engine:
- Opzione
gcsfuse
:--cache-dir
- Campo del file di configurazione:
cache-dir
Se utilizzi un deployment Google Kubernetes Engine utilizzando il driver CSI di Cloud Storage FUSE per Google Kubernetes Engine, specifica uno dei seguenti metodi:
- Opzione
gcsfuse
:--file-cache-max-size-mb
- Campo del file di configurazione:
file-cache:max-size-mb
- Opzione
(Facoltativo) Attiva i download paralleli impostando uno dei seguenti metodi su
true
se i download paralleli non sono stati attivati automaticamente:- Opzione
gcsfuse
:--file-cache-enable-parallel-downloads
- Campo del file di configurazione:
file-cache:enable-parallel-downloads
- Opzione
Limita la capacità totale che la cache FUSE di Cloud Storage può utilizzare all'interno della directory montata modificando una delle seguenti opzioni, che viene impostata automaticamente su un valore di
-1
quando specifichi una directory della cache:- Opzione
gcsfuse
:--file-cache-max-size-mb
- Campo del file di configurazione:
file-cache:max-size-mb
Puoi anche specificare un valore in MiB o GiB per limitare le dimensioni della cache.
- Opzione
(Facoltativo) Ignora la scadenza TTL delle voci memorizzate nella cache e pubblica i metadati dei file dalla cache, se disponibili, utilizzando uno dei seguenti metodi e impostando un valore di
-1
:- Opzione
gcsfuse
:--metadata-cache-ttl-secs
- Campo del file di configurazione:
metadata-cache:ttl-secs
Il valore predefinito è 60 secondi e un valore di
-1
lo imposta su illimitato. Puoi anche specificare un valore elevato in base ai tuoi requisiti. Ti consigliamo di impostare il valore dittl-secs
sul valore più alto possibile per il tuo workload. Per saperne di più sul TTL per le voci memorizzate nella cache, consulta la sezione Considerazioni.- Opzione
(Facoltativo) Abilita la funzionalità della cache dei file per caricare in modo asincrono l'intero file nella cache se la prima operazione di lettura del file inizia da un punto diverso da
offset 0
, in modo che anche le letture successive di offset diversi dello stesso file possano essere eseguite dalla cache. Utilizza uno dei seguenti metodi e imposta l'opzione sutrue
:- Opzione
gcsfuse
:--file-cache-cache-file-for-range-read
- Campo del file di configurazione:
file-cache:cache-file-for-range-read
- Opzione
(Facoltativo) Configura la memorizzazione nella cache delle statistiche e dei tipi. Per scoprire di più sulle cache di stato e di tipo, consulta Panoramica della memorizzazione nella cache dei tipi o Panoramica della memorizzazione nella cache degli stati.
Esegui manualmente il comando
ls -R
sul bucket montato prima di eseguire il workload per precompilare i metadati e assicurarti che la cache dei tipi venga compilata prima della prima lettura in un metodo batch più veloce. Per ulteriori informazioni su come migliorare le prestazioni della prima lettura, vedi Migliorare le prime letture.
Una volta abilitata la memorizzazione nella cache dei file, i download paralleli vengono abilitati automaticamente
in Cloud Storage FUSE versione 2.12 e successive. Se utilizzi una versione precedente di
Cloud Storage FUSE, imposta l'opzione enable-parallel-downloads
su true
per
attivare i download paralleli.
Configura le proprietà di supporto per i download paralleli
Puoi configurare facoltativamente le seguenti proprietà di supporto per i download paralleli utilizzando Cloud Storage FUSE CLI o un file di configurazione di Cloud Storage FUSE:
Descrizione della proprietà | gcsfuse opzione |
Campo del file di configurazione |
---|---|---|
Il numero massimo di worker che possono essere generati per file per scaricare l'oggetto da Cloud Storage nella cache dei file. | --file-cache-parallel-downloads-per-file |
file-cache:parallel-downloads-per-file |
Il numero massimo di worker che possono essere generati in un determinato momento in tutti i job di download dei file. Il valore predefinito è impostato sul doppio del numero di core della CPU sulla tua macchina. Per non specificare alcun limite, inserisci il valore `-1`. | --file-cache-max-parallel-downloads |
file-cache:max-parallel-downloads |
Le dimensioni di ogni richiesta di lettura in MiB che ogni worker effettua a Cloud Storage durante il download dell'oggetto nella cache dei file. Tieni presente che un download parallelo viene attivato solo se il file letto ha le dimensioni specificate. | --file-cache-download-chunk-size-mb |
file-cache:download-chunk-size-mb |
Disattivare i download paralleli
Per disabilitare i download paralleli, imposta uno dei seguenti valori su false
:
- Opzione
gcsfuse
:--file-cache-enable-parallel-downloads
- Campo del file di configurazione:
file-cache:enable-parallel-downloads
Passaggi successivi
Esamina le considerazioni per la memorizzazione nella cache in Cloud Storage FUSE.
Scopri come migliorare le prestazioni di Cloud Storage FUSE.