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

Cloud Storage FUSE offre prestazioni migliori per i carichi di lavoro sequenziali di lettura e scrittura rispetto carichi di lavoro casuali di lettura e scrittura. Cloud Storage FUSE utilizza un modello euristico per rilevare quando un file viene letto in sequenza, il che consente a Cloud Storage FUSE per emettere meno richieste di lettura più grandi a Cloud Storage utilizzando lo stesso connessione TCP.

Per ottimizzare le prestazioni di lettura sequenziale, è consigliabile carichi e leggi file di dimensioni comprese tra 5 e 200 MB. Per ottimizzare rendimento di lettura casuale, ti consigliamo di caricare e leggere Deve essere di dimensioni pari a 2 MB.

Memorizzazione nella cache

L'utilizzo di Cloud Storage FUSE con file, statistiche, tipo o tutti e tre i tipi di cache abilitati può aumentare le prestazioni e ridurre i costi, ma può anche ridurre la 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 delle prestazioni. 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 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.

Controllo della procedura di caricamento

Per impostazione predefinita, le richieste non riuscite da Cloud Storage FUSE a Cloud Storage vengono nuovo tentativo con il backoff esponenziale fino a un backoff massimo specificato , che per impostazione predefinita ha un valore di 30s (30 secondi). Una volta eseguito il backoff, durata supera la durata massima specificata, il nuovo tentativo continua con durata massima specificata. Puoi utilizzare l'opzione --max-retry-sleep come parte di una chiamata gcsfuse per specificare la durata del backoff.

Per ulteriori informazioni sull'opzione --max-retry-sleep, consulta le Documentazione relativa alla riga di comando gcsfuse.

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

Logging

Per configurare il logging per le attività di Cloud Storage FUSE, inclusa la rotazione dei log, specifica i campi sotto la chiave logging in un File di configurazione di Cloud Storage FUSE. Per impostazione predefinita, i file di log vengono ruotati e consumano circa 1 GiB di spazio.