Prestazioni e best practice di Cloud Storage FUSE

In questa pagina vengono descritte le prestazioni di Cloud Storage FUSE in termini di latenza, larghezza di banda, nuovi tentativi e best practice quando Cloud Storage FUSE.

Letture e scritture

Per migliorare le operazioni di lettura e scrittura, ti consigliamo di implementare le seguenti best practice pratiche:

  • 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 ulteriori 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. Ti consigliamo di utilizzare i download paralleli per gli scenari di lettura a thread singolo che per caricare file di grandi dimensioni, come la pubblicazione 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 o interfaccia a riga di comando gcsfuse:

  • 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 in qualsiasi momento in tutti i job di download di 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

Utilizzo di Cloud Storage FUSE con file, statistiche, tipo, elenco o tutti e quattro i tipi di cache può aumentare le prestazioni e ridurre i costi, ma può anche ridurre coerenza.

Statistiche e tipo di cache

Le cache delle statistiche e dei tipi possono ridurre il numero di chiamate seriali Cloud Storage in caso di letture ripetute dello stesso file, migliorando le prestazioni dei dispositivi. Imposta statistiche e tipo di cache in base al numero di file con letture ripetute e che potrebbero trarre vantaggio dalla memorizzazione nella cache. Puoi utilizzare il numero di file corrispondenti alle dimensioni approssimative della cache. Consigliamo seguenti limiti per ogni tipo di cache:

  • stat-cache-max-size-mb: utilizza il valore predefinito di 32 se il tuo carico di lavoro riguarda fino a 20.000 file. Se il carico di lavoro supera i 20.000 file, aumenta il valore stat-cache-max-size-mb di 10 per ogni 6000 file, 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 Da stat-cache-max-size-mb a -1 per consentire alla cache delle statistiche di utilizzare il massimo memoria, se necessario.

  • type-cache-max-size-mb: utilizza il valore predefinito 4 se il valore massimo di file all'interno di una singola directory dal bucket che stai montando non contenga più di 20.000 file. Se il numero massimo di file all'interno di un la singola directory che stai montando contiene più di 20.000 file, aumenta il valore type-cache-max-size-mb di 1 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 type-cache-max-size-mb su -1 per consentire l'utilizzo massimo da parte del tipo di cache memoria, se necessario.

Ti consigliamo di eseguire una scheda completa passando ls -R sull'elemento prima di eseguire il carico di lavoro per migliorare le prestazioni alla prima esecuzione popolando in anticipo la cache dei tipi in un metodo batch più rapido.

Best practice per la memorizzazione nella cache dei file

Assicurati che l'intero set di dati rientri nella capacità della cache al meglio ed evitare il thrashing della cache. Considera inoltre la capacità massima e le prestazioni che i contenuti multimediali della cache possono fornire. Se fai clic sul pulsante le prestazioni massime e/o il limite di capacità della cache, è utile direttamente da Cloud Storage, che ha limiti molto più elevati rispetto Cloud Storage FUSE.

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à di cache dei file di Cloud Storage FUSE per si basano sulle caratteristiche prestazionali del supporto della cache sottostante, se fornisce un numero elevato di IOPS e una 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. Lettura o scrittura di più file di grandi dimensioni alla volta può contribuire ad aumentare la velocità effettiva. Utilizza la funzionalità di cache dei file di Cloud Storage FUSE per migliorare le prestazioni per I/O piccoli 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.

Raggiungi la velocità effettiva massima

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 usi 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 directory e dagli oggetti al loro interno, puoi rendere le directory definite esplicitamente creandole nel tuo file system locale utilizzando il comando mkdir oppure inclusa 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 può rendere un'operazione di creazione dell'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.