Prestazioni e best practice di Cloud Storage FUSE

Questa pagina descrive le prestazioni di Cloud Storage FUSE in termini di latenza, larghezza di banda e tentativi di nuovo invio, nonché le best practice per l'utilizzo di Cloud Storage FUSE.

Letture e scritture

Per migliorare le letture e le scritture, ti consigliamo di implementare le seguenti best practice:

  • Esegui carichi di lavoro sequenziali di lettura e scrittura quando possibile: Cloud Storage FUSE offre prestazioni migliori per i carichi di lavoro sequenziali di lettura e scrittura rispetto a carichi di lavoro casuali di lettura e scrittura. Cloud Storage FUSE utilizza un approccio euristico rilevare quando un file viene letto in sequenza, abilitando Cloud Storage FUSE per emettere meno richieste di lettura più grandi a Cloud Storage utilizzando stessa connessione TCP.

  • Regola le dimensioni dei file in base al tipo di lettura: per ottimizzare la lettura sequenziale rendimento, ti consigliamo di caricare e leggere file di dimensioni comprese tra 5 MB e Deve essere di 200 MB. Per ottimizzare il rendimento della lettura casuale, ti consigliamo di: caricare e leggere file di dimensioni pari a circa 2 MB.

  • Accelera le letture abilitando i download paralleli: accelera i file di grandi dimensioni legge oltre 1 GB abilitando i download paralleli. Per maggiori informazioni le informazioni, vedi Migliorare le prestazioni di lettura utilizzando i download paralleli.

Migliora le prestazioni di lettura utilizzando i download paralleli

Puoi migliorare le prestazioni di lettura attivando e configurando il di download in parallelo, che utilizza più worker per scaricare un file in parallelo usando la directory della cache dei file come buffer di precaricamento. Consigliamo di utilizzare i download paralleli per gli scenari di lettura a thread singolo che caricano file di grandi dimensioni, come l'hosting di modelli e i ripristini dei checkpoint.

Prima di attivare i download paralleli, considera quanto segue:

  • Se la tua applicazione ha un parallelismo di lettura elevato su otto thread, potrebbero verificarsi un leggero peggioramento delle prestazioni.

  • Sconsigliamo di utilizzare i download paralleli per i carichi di lavoro di addestramento a causa il loro elevato parallelismo di lettura.

  • Per utilizzare i download paralleli, devi prima abilitare e configurare la cache dei file.

  • Il file da leggere deve rientrare nelle directory della cache del file disponibili che può essere controllata utilizzando la proprietà max-size-mb.

Configurare i download paralleli

Dopo aver impostato la proprietà enable-parallel-downloads su true, puoi facoltativamente configurare le impostazioni di supporto utilizzando File di configurazione di Cloud Storage FUSE:

  • parallel-downloads-per-file: il numero massimo di worker che è possibile generato per file per scaricare l'oggetto da Cloud Storage nella cache del file. Il valore predefinito è 16.

  • max-parallel-downloads: il numero massimo di worker che possono essere generati in un determinato momento in tutti i job di download dei file. La per impostazione predefinita è il doppio del numero di core della CPU sulla macchina. A non specificare alcun limite, inserisci il valore -1.

  • download-chunk-size-mb: le dimensioni di ogni richiesta di lettura in MiB che ogni il worker invia a Cloud Storage durante il download dell'oggetto nel file . La dimensione predefinita è 50 MiB. Tieni presente che un download parallelo richiede se il file da leggere ha le dimensioni specificate.

Memorizzazione nella cache

Cloud Storage FUSE offre quattro tipi di memorizzazione nella cache per contribuire ad aumentare le prestazioni e riducono i costi: memorizzazione nella cache di file, memorizzazione nella cache delle statistiche, tipo di memorizzazione nella cache ed elenchi di memorizzazione nella cache. Per saperne di più su queste cache, consulta Panoramica della memorizzazione nella cache.

IOPS (query al secondo)

Filestore è un'opzione migliore di Cloud Storage FUSE per i carichi di lavoro che richiedono un elevato numero di operazioni di I/O al secondo (IOPS), inoltre noto come "query al secondo" in Cloud Storage. Filestore è è l'opzione migliore per IOPS molto elevate su un singolo file system e una latenza di pochi millisecondi.

In alternativa, puoi anche utilizzare la funzionalità della cache file FUSE di Cloud Storage per basarti sulle caratteristiche di prestazioni dei media della cache sottostanti, se forniscono IOPS elevati e bassa latenza.

Latenza e velocità effettiva

Cloud Storage FUSE ha una latenza maggiore rispetto a un file system locale. La velocità effettiva è è ridotta quando leggi o scrivi file di piccole dimensioni uno alla volta, in quanto diverse chiamate API separate. La lettura o la scrittura di più file di grandi dimensioni alla volta può contribuire ad aumentare la velocità effettiva delle transazioni. Utilizza la funzionalità della cache dei file di Cloud Storage FUSE per migliorare le prestazioni per I/O piccole e casuali.

La latenza del file system di Cloud Storage FUSE influisce su rsync, che esegue solo operazioni di lettura e scrittura. un file alla volta. Per trasferire più file da o verso il tuo bucket in in parallelo, utilizza Google Cloud CLI eseguendo gcloud storage rsync. Per saperne di più, consulta la documentazione di rsync.

Ottieni la massima velocità effettiva

Per ottenere la velocità effettiva massima, utilizza una macchina con risorse CPU sufficienti per favorire la velocità effettiva e saturare la scheda di interfaccia di rete (NIC). Insufficiente Le risorse della CPU possono causare la limitazione di Cloud Storage FUSE.

Se utilizzi Google Kubernetes Engine, Aumenta l'allocazione della CPU al container collaterale di Cloud Storage FUSE se i tuoi carichi di lavoro hanno bisogno di una velocità effettiva più elevata. Puoi aumentare le risorse utilizzate il container collaterale o allocare risorse illimitate.

Limitazione di frequenza

a limitare la frequenza di traffico che Cloud Storage FUSE invia a Cloud Storage, puoi utilizzare le seguenti opzioni come parte il tuo comando gcsfuse:

  • L'opzione --limit-ops-per-sec controlla la frequenza con cui Cloud Storage FUSE invia richieste a Cloud Storage.

  • L'opzione --limit-bytes-per-sec controlla la larghezza di banda con cui Cloud Storage FUSE scarica i dati da Cloud Storage.

Per ulteriori informazioni su queste opzioni, consulta Documentazione sulla riga di comando di gcsfuse.

Tutte le limitazione di frequenza sono approssimative ed eseguite su un periodo di 8 ore. Di per impostazione predefinita, non viene applicato alcun limite di frequenza.

Semantica della directory

Cloud Storage opera con uno spazio dei nomi semplice, il che significa che in realtà non esistono all'interno di Cloud Storage. Piuttosto, directory sono rappresentate da nomi di oggetti che terminano con una barra (/) (ad esempio, nel nome dell'oggetto my-bucket/directory/file.txt, my-bucket/directory/ rappresenta una directory). Directory esistenti che fanno parte di nomi di oggetti che non esistono perché gli oggetti effettivi sono noti directory definite implicitamente.

Per impostazione predefinita, quando monta un bucket con directory definite in modo implicito, Cloud Storage FUSE non può dedurre o accedere a queste directory. FUSE di Cloud Storage può dedurre solo directory esplicitamente definite, il che significa che esiste come oggetto effettivo all'interno del bucket Cloud Storage.

Ad esempio, supponi di montare un bucket denominato my-bucket, che contiene l'oggetto my-bucket/directory/file1.txt. Se esegui ls sul punto di montaggio del bucket, Cloud Storage FUSE non può accedere alla directory my-bucket/directory/ o alla file1.txt oggetto al suo interno perché directory non esiste come oggetto in Cloud Storage. Per consentire a Cloud Storage FUSE di dedurre le directory e gli oggetti al loro interno, puoi definire esplicitamente le directory creandole nel file system locale utilizzando il comando mkdir o includendo l'opzione --implicit-dirs nel comando gcsfuse.

Per saperne di più sulla semantica della directory, incluso come montare i bucket con i prefissi esistenti, consulta la sezione File e directory nella documentazione di GitHub. Per ulteriori informazioni sull'opzione --implicit-dirs, consulta le Documentazione sulla riga di comando di Cloud Storage FUSE.

Considerazioni relative all'elenco degli oggetti

Quando elenchi tutti gli oggetti in un bucket montato (ad es. eseguendo ls), Cloud Storage FUSE chiama l'API Objects: list su Cloud Storage. La L'API impagina i risultati, il che significa che Cloud Storage FUSE potrebbe dover emettere più chiamate, a seconda di quanti oggetti sono presenti nel bucket. Tieni presente che questo può rendere un'operazione sull'elenco costosa e lenta.

Benchmark

Per istruzioni su come eseguire test di carico su Cloud Storage FUSE, consulta Performance Benchmarks (Benchmark delle prestazioni) nella documentazione di GitHub.