Utilizzare la memorizzazione nella cache dei file di Cloud Storage FUSE

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:

  • Migliora le prestazioni per I/O piccoli e casuali: la memorizzazione nella cache dei file migliora la latenza e il throughput eseguendo le letture direttamente dal supporto della cache. Le operazioni di I/O piccole e casuali possono essere notevolmente più veloci se gestite dalla cache.

  • Sfrutta i download paralleli: 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.

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

  • Costi ridotti: gli hit della cache vengono pubblicati localmente e non comportano costi di rete o per operazioni 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 il servizio 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 Attiva 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

Le sezioni seguenti forniscono importanti considerazioni sull'utilizzo della memorizzazione nella cache dei file.

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 CLI --file-cache-max-size-mb o il campo file-cache:max-size-mb.

Gestione della lettura casuale e parziale

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 piccolo sottoinsieme di intervallo. In questo modo, le letture casuali o parziali successive 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, Cloud Storage FUSE, per impostazione predefinita, 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, utilizza uno dei seguenti metodi per impostare il comportamento su true:

Ti consigliamo di attivare questa proprietà se vengono eseguite molte operazioni di lettura casuali o parziali diverse sullo stesso oggetto.

Eliminazione dalla cache

L'eliminazione dei metadati e dei dati memorizzati nella cache si basa su un algoritmo di tipo Least Recently Used (LRU) che inizia una volta raggiunto il limite di spazio configurato per --file-cache-max-size-mb. Se la voce scade in base al TTL, viene prima effettuata una chiamata ai metadati GET 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 l'annullamento del montaggio 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 i riavvii, 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 i riavvii.

Sicurezza dei dati

Quando abiliti la memorizzazione nella cache, Cloud Storage FUSE utilizza la directory della cache specificata utilizzando uno dei seguenti metodi come directory sottostante per la cache per rendere persistenti i 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.

Se devono essere eseguiti 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.

  • Memorizzare 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 su uno 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:

  1. Per Google Cloud Hyperdisk, consulta Crea un nuovo volume Google Cloud Hyperdisk.

  2. Per Persistent Disk, consulta Crea un nuovo volume su disco permanente.

  3. Per le SSD locali, consulta Aggiungere un SSD locale alla VM.

  4. Per i dischi RAM in memoria, vedi Creazione di dischi RAM in memoria.

Attivare e configurare il comportamento di memorizzazione nella cache dei file

Attiva e configura la memorizzazione nella cache dei file utilizzando una delle seguenti opzioni:

  1. 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:

    Se utilizzi un deployment di Google Kubernetes Engine utilizzando il driver CSI di Cloud Storage FUSE per Google Kubernetes Engine, specifica una delle seguenti opzioni:

  2. (Facoltativo) Attiva i download paralleli impostando una delle seguenti opzioni su true se i download paralleli non sono stati attivati automaticamente:

  3. 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 sul valore -1 quando specifichi una directory della cache:

    Puoi anche specificare un valore in MiB o GiB per limitare le dimensioni della cache.

  4. (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:

    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 di ttl-secs sul valore più alto possibile per il tuo workload. Per ulteriori informazioni sull'impostazione di un TTL per le voci memorizzate nella cache, consulta Time to live.

  5. (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 gestite dalla cache. Utilizza uno dei seguenti metodi e imposta l'opzione su true:

  6. (Facoltativo) Configura la memorizzazione nella cache delle statistiche e dei tipi. Per scoprire di più sulle cache di tipo e stat, consulta Panoramica della memorizzazione nella cache dei tipi o Panoramica della memorizzazione nella cache di stat.

  7. 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ù rapido. Per saperne di più su come migliorare le prestazioni della prima lettura, consulta 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

Se vuoi, puoi configurare le seguenti proprietà di supporto per i download paralleli utilizzando la CLI Cloud Storage FUSE o un file di configurazione Cloud Storage FUSE:

Descrizione della proprietà Opzione CLI 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 disattivare i download paralleli, imposta una delle seguenti opzioni su false:

  • Opzione dell'interfaccia a riga di comando --file-cache-enable-parallel-downloads
  • Campo file-cache:enable-parallel-downloads

Passaggi successivi