Best practice per i trasferimenti del file system

Questa pagina descrive le best practice per i trasferimenti del file system.

Best practice per le prestazioni

Di seguito sono riportate le best practice per garantire un buon rendimento del trasferimento:

  • Massimizza le prestazioni dell'agente di trasferimento.

  • Esegui il benchmarking del rendimento trasferendo un corpus di dati di grandi dimensioni, in genere di almeno 100 GB.

    Storage Transfer Service è un servizio su larga scala ottimizzato per la velocità in uscita, pertanto le prestazioni su set di dati di test molto piccoli non sono indicative delle prestazioni su set di dati di grandi dimensioni in produzione.

  • Limita le singole cartelle di origine a 1 milione di file. Le directory contenenti milioni di file possono rallentare l'intero trasferimento.

  • Esegui gli agenti in macchine virtuali (VM) separate per poter scalare il consumo di risorse in modo più efficace.

  • Verifica che l'interfaccia di rete delle macchine dell'agente sia dimensionata in base alla larghezza di banda di lettura/scrittura necessaria.

    Ad esempio, se intendi utilizzare completamente una rete WAN (Wide Area Network) da 20 Gbps, l'interfaccia di rete della macchina dell'agente deve supportare 20 Gbps per leggere i dati dal file system di rete e altri 20 Gbps per trasferire i dati a Cloud Storage, ovvero 40 Gbps di larghezza di banda totale.

  • Monitora la CPU, la memoria e la rete sulle macchine dell'agente per assicurarti che non siano sovraccariche da altri carichi di lavoro, in quanto ciò potrebbe influire negativamente sulle prestazioni. Consulta i requisiti hardware dell'agente per i valori suggeriti per memoria e CPU.

Caricamenti multiparte

Se il trasferimento avviene da un file system POSIX a Cloud Storage o tra file system POSIX, ti consigliamo di attivare i caricamenti suddivisi. I caricamenti suddivisi in più parti possono velocizzare fino al 300% i trasferimenti che includono file di grandi dimensioni, suddividendoli in parti più piccole e caricandoli in parallelo.

I file system compatibili con HDFS e S3 non supportano i caricamenti suddivisi in più parti.

Attivare i caricamenti multiparte

Per attivare i caricamenti multiparte:

  • Devi concedere le autorizzazioni richieste all'account che autorizza gli agenti di trasferimento, ovvero un account utente o un account di servizio.

  • Il bucket di destinazione o intermedio non deve avere un criterio di conservazione o un blocco degli oggetti.

Una volta attivato, Storage Transfer Service utilizza automaticamente il caricamento suddiviso se questo può velocizzare un trasferimento.

Configurare le regole del ciclo di vita degli oggetti con più parti

Puoi utilizzare la gestione del ciclo di vita degli oggetti di Cloud Storage per interrompere un caricamento suddiviso incompleto ed eliminare le parti associate. Consulta Interrompere i caricamenti suddivisi in più parti incompleti nella documentazione di Cloud Storage.

Ti consigliamo di impostare un valore di age pari a 7 giorni.

Disattivare i caricamenti multiparte

Per disattivare i caricamenti suddivisi in più parti, reinstalla gli agenti di trasferimento utilizzando docker run e passa --enable-multipart=false:

sudo docker run --ulimit memlock=64000000 -d --rm \
-v /usr/local/research:/usr/local/research \
gcr.io/cloud-ingest/tsop-agent:latest \
--project-id=PROJECT_ID \
--agent-pool=AGENT_POOL \
--creds-file=CREDENTIAL_FILE \
--hostname=$(hostname) \
--enable-multipart=false

Sostituisci quanto segue:

  • PROJECT_ID specifica l'ID progetto che ospita il trasferimento.
  • CREDENTIAL_FILE: se l'agente di trasferimento utilizza un account di servizio per l'autenticazione, specifica il percorso di un file delle credenziali dell'account di servizio in formato JSON.

In alternativa, revoca le autorizzazioni richieste dall'account che autorizza gli agenti di trasferimento, ovvero un account utente o un account di servizio.

Massimizzare il rendimento dell'agente di trasferimento

Il rendimento del trasferimento è influenzato dalle seguenti variabili:

  • Funzionalità del file system.

  • Limitazioni hardware sottostanti.

    Il tipo di supporto dell'unità disco rigido, il bus di input/output e la connettività della rete di area locale (LAN) influiscono sulle prestazioni.

  • Portata e utilizzo della WAN.

    Una WAN più lenta o con un utilizzo elevato rallenta le prestazioni.

  • Caratteristiche dei file.

    Ad esempio, molti file di grandi dimensioni hanno una maggiore Throughput di rete rispetto a molti file di piccole dimensioni a causa del sovraccarico della rete.

A causa di queste variabili, non possiamo prevedere il rendimento effettivo o fornire un numero ottimale di agenti da utilizzare.

Ti consigliamo di utilizzare almeno tre agenti su macchine diverse, se possibile, in modo che il trasferimento rimanga tollerante agli errori. Puoi aggiungere agenti di trasferimento mentre i trasferimenti sono in esecuzione, poiché il rendimento aumenta in modo dinamico.

Per osservare l'impatto dell'aggiunta di agenti e scegliere il numero di agenti più adatto al tuo ambiente:

  1. Avvia un trasferimento di grandi dimensioni che richiede almeno 1 ora. Ad esempio, avvia un trasferimento contenente almeno 100.000 file e con una dimensione totale di almeno 100 GB.

  2. Utilizza Cloud Monitoring per osservare il throughput complessivo dell'agente.

  3. Attendi che la velocità effettiva si stabilizzi e determina se la tua capacità WAN o la tua larghezza di banda massima sono limitate.

  4. Se non hai saturato la capacità della tua WAN e non hai raggiunto il limite di trasferimento desiderato, aggiungi un altro agente. L'agente aggiuntivo aumenta automaticamente il throughput del trasferimento. Attendi circa 3 minuti affinché la larghezza di banda si stabilizzi in Cloud Monitoring.

Ripeti i passaggi 3 e 4, aggiungendo un agente alla volta finché non raggiungi il limite che preferisci. Se le risorse di calcolo, del file system e di rete sono disponibili, puoi eseguire fino a 100 agenti contemporaneamente per pool di agenti.

Se saturi la larghezza di banda in uscita prima di raggiungere il limite desiderato, puoi procedere nel seguente modo:

Se hai aggiunto agenti, ma la velocità in uscita non aumenta e la tua rete WAN non è saturata, esamina la velocità in uscita del file system. In rari casi, la produttività del file system è satura, ostacolando la tua capacità di migliorare le prestazioni di trasferimento.

Agenti di denominazione

Quando assegni un nome agli agenti, ti consigliamo di procedere come segue:

  • Includi sempre il nome host nell'agente. In questo modo puoi trovare la macchina su cui è in esecuzione un agente. Ti consigliamo di passare --hostname=$(hostname) al comando run di Docker.

  • Scegli uno schema di prefisso dell'agente che ti aiuti a identificare gli agenti nel contesto della tua organizzazione di monitoraggio e infrastruttura. Ad esempio:

    • Se hai tre progetti di trasferimento distinti, ti consigliamo di includere il nome del team nell'agente. Ad esempio, logistics.

    • Se stai eseguendo due progetti di trasferimento diversi per due data center diversi, ti consigliamo di includere il nome del data center nel prefisso dell'agente. Ad esempio, omaha.