Quando Google Cloud CLI legge gli oggetti dai bucket a livello di zona in Rapid Bucket, applica automaticamente le configurazioni predefinite di concorrenza e suddivisione in base alle risorse di sistema disponibili.
Questa pagina descrive queste configurazioni predefinite e spiega come utilizzare gcloud CLI per ottimizzare ulteriormente la concorrenza, il ridimensionamento dei processi e le funzionalità di attivazione (come l'isolamento NIC) per migliorare il rendimento di workload specifici. Per ottimizzare il rendimento durante il montaggio dei bucket a livello di zona come file system, consulta Rendimento di Cloud Storage FUSE per Rapid Bucket.
Prima di configurare le impostazioni di rendimento, assicurati di creare un bucket a livello di zona. Se prevedi di scaricare oggetti in un volume di archiviazione collegato (come Hyperdisk o SSD locale), assicurati di formattare e montare il volume nel tuo ambiente. Per i concetti generali di suddivisione, consulta Download di oggetti suddivisi.
Configurazioni predefinite di concorrenza e suddivisione
Le configurazioni predefinite in questa sezione si applicano in modo specifico alla lettura di oggetti da bucket a livello di zona in Rapid Bucket utilizzando gcloud CLI versione 583.0.0 o successive. Per i bucket Cloud Storage standard, gcloud CLI applica le proprie impostazioni di concorrenza predefinite.
Per i bucket a livello di zona, gcloud CLI imposta automaticamente i parametri predefiniti di concorrenza e suddivisione in base al numero di core della CPU virtuale (vCPU) disponibili e al fatto che tu stia scaricando un singolo oggetto o più oggetti. Le seguenti tabelle mappano i valori predefiniti per queste proprietà:
- Numero di processi:
storage/process_count - Numero di thread:
storage/thread_count - Soglia di suddivisione:
storage/sliced_object_download_threshold - Componenti massimi:
storage/sliced_object_download_max_components - Dimensione componente:
storage/sliced_object_download_component_size
Download di un singolo oggetto
Quando scarichi un singolo oggetto, gcloud CLI applica le seguenti impostazioni predefinite:
| vCPU disponibili | Numero di processi | Numero di thread | Soglia di suddivisione | Componenti massimi | Dimensione componente |
|---|---|---|---|---|---|
≥ 8 |
8 |
2 |
50 MiB |
16 |
5 MiB |
< 8 |
4 |
2 |
50 MiB |
8 |
5 MiB |
Download di più oggetti
Quando scarichi più oggetti contemporaneamente, gcloud CLI applica le seguenti impostazioni predefinite:
| vCPU disponibili | Numero di processi | Numero di thread | Soglia di suddivisione | Componenti massimi | Dimensione componente |
|---|---|---|---|---|---|
≥ 48 |
min(96, available_cores * 0.75) |
1 |
10 MiB |
5 |
5 MiB |
4 to 47 |
16 |
4 |
10 MiB |
10 |
5 MiB |
< 4 |
2 |
10 |
50 MiB |
10 |
5 MiB |
Ottimizzare le configurazioni di concorrenza e suddivisione
Questa sezione descrive come configurare le impostazioni di concorrenza e suddivisione utilizzando gcloud CLI e fornisce i valori consigliati per gli ambienti hardware comuni.
Come applicare una configurazione
Per configurare e applicare le impostazioni di ottimizzazione personalizzate:
Installa o aggiorna Google Cloud CLI alla versione 583.0.0 o successive.
Nell'ambiente di sviluppo, esegui il
gcloud config configurations createcomando per creare e attivare un profilo di configurazione:gcloud config configurations create CONFIGURATION_NAME
Sostituisci
CONFIGURATION_NAMEcon un nome per il profilo di configurazione, ad esempiorapid-perf.Esegui il comando
gcloud config setper configurare le proprietà di concorrenza e suddivisione:gcloud config set storage/thread_count THREAD_COUNT gcloud config set storage/process_count PROCESS_COUNT gcloud config set storage/sliced_object_download_threshold THRESHOLD_SIZE gcloud config set storage/sliced_object_download_component_size COMPONENT_SIZE gcloud config set storage/sliced_object_download_max_components MAX_COMPONENTS
Sostituisci i segnaposto con i valori adatti al tuo workload:
THREAD_COUNT: il numero di thread per processo worker, ad esempio1.PROCESS_COUNT: il numero di processi worker, ad esempio64.THRESHOLD_SIZE: la soglia minima di dimensione dell'oggetto per attivare la suddivisione, ad esempio128 MiBper i workload multi-gigabyte (o32 MiBper gli oggetti più piccoli).COMPONENT_SIZE: la dimensione target di ogni suddivisione di download, ad esempio128 MiBper i workload multi-gigabyte (o32 MiBper gli oggetti più piccoli).MAX_COMPONENTS: il numero massimo di componenti di suddivisione per oggetto, ad esempio16.
Per maggiori informazioni su queste proprietà, consulta Suggerimenti per l'ottimizzazione.
Scarica gli oggetti nel percorso di archiviazione locale eseguendo il
gcloud storage cpcomando:gcloud storage cp -r gs://BUCKET_NAME/SOURCE_PATH/ /DESTINATION_PATH/
Sostituisci quanto segue:
BUCKET_NAME: il nome del bucket a livello di zona.SOURCE_PATH: la directory di origine o il percorso dell'oggetto nel bucket.DESTINATION_PATH: il percorso della directory locale, ad esempio./data/, o il punto di montaggio del volume di archiviazione locale, ad esempio/mnt/hyperdisk/data/.
Suggerimenti per l'ottimizzazione
Per scegliere i valori appropriati per i segnaposto nei passaggi precedenti, consulta le seguenti linee guida:
Numero di processi
Imposta la proprietà storage/process_count per scalare i processi worker paralleli
in base ai core della CPU disponibili. Limita il numero di processi a un massimo dell'80% dei core della CPU disponibili:
storage/process_count = min(target_cores, 0.8 * available_cores)
Dove:
target_cores: il numero di core della CPU o di processi worker che vuoi allocare per il trasferimento (ad esempio 64).available_cores: il numero totale di CPU virtuali (vCPU) disponibili sulla macchina (ad esempio, eseguendonprocsu Linux).
Ad esempio, se la tua destinazione è di 64 processi worker, le macchine con 80 o più vCPU possono impostare storage/process_count su 64. Per le macchine con meno di 80 vCPU, imposta storage/process_count sull'80% dei core disponibili (ad esempio, 51 su una VM con 64 vCPU).
Numero di thread
Imposta la proprietà storage/thread_count per controllare il numero di thread
per processo worker. Sulle macchine con 48 o più vCPU, imposta storage/thread_count su 1.
Limitare ogni processo worker a un singolo thread sulle macchine con un numero elevato di core aiuta a ridurre la contesa dei thread Python Global Interpreter Lock (GIL) e gRPC.
Soglia di suddivisione
Imposta la proprietà storage/sliced_object_download_threshold per specificare
la dimensione minima dell'oggetto richiesta per attivare i download suddivisi.
Ti consigliamo di impostare storage/sliced_object_download_threshold su un valore uguale o maggiore di storage/sliced_object_download_component_size.
Suddivisioni per oggetto
Imposta le proprietà storage/sliced_object_download_component_size e
storage/sliced_object_download_max_components per controllare il
numero di suddivisioni parallele generate per oggetto. gcloud CLI calcola le suddivisioni per oggetto utilizzando la seguente formula:
Slices per object = min(object_size / component_size, max_components)
Se un oggetto è abbastanza grande da superare il valore max_components se suddiviso in base al valore component_size, gcloud CLI ignora il valore component_size e divide l'oggetto in modo uniforme in suddivisioni max_components. Ad esempio, il download di un oggetto da 100 GiB con component_size=128 MiB e max_components=16 produce 16 suddivisioni da 6,25 GiB ciascuna.
Ogni suddivisione viene scaricata in modo indipendente e in parallelo in base alla capacità totale dei worker (storage/process_count × storage/thread_count).
Saturazione dei worker
Per mantenere un elevato utilizzo dei worker durante un trasferimento, regola il numero di processi, il numero di thread, la dimensione dei componenti e i componenti massimi in modo che i trasferimenti tipici generino un numero totale di suddivisioni pari o superiore alla capacità totale dei worker:
Total slices across all objects >= storage/process_count * storage/thread_count
Ad esempio, considera il download di quattro oggetti utilizzando 64 processi worker (process_count=64 e thread_count=1):
- Quattro oggetti da 2 GiB: l'impostazione di
component_size=128 MiBgenera 16 suddivisioni per oggetto (4 × 16 = 64 suddivisioni), utilizzando completamente tutti i 64 processi worker. - Quattro oggetti da 512 MiB: l'impostazione di
component_size=32 MiBgenera 16 suddivisioni per oggetto (4 × 16 = 64 suddivisioni). Al contrario, l'utilizzo dicomponent_size=128 MiBsu oggetti da 512 MiB produce solo 4 suddivisioni per oggetto (16 suddivisioni totali), lasciando inattivi 48 processi worker.
Isolamento NIC
Sulle macchine Linux con più di 16 core della CPU, puoi attivare l'isolamento della scheda di interfaccia
di rete (NIC) impostando la storage/use_nic_isolation proprietà
su True:
gcloud config set storage/use_nic_isolation True
Quando attivi questa proprietà, gcloud CLI imposta l'affinità della CPU (os.sched_setaffinity()). Questa configurazione isola il 10% dei core della CPU per le richieste di interrupt hardware di rete (IRQ) e riserva i core rimanenti per l'elaborazione dei dati.
Passaggi successivi
- Scopri di più su Rapid Bucket.
- Crea bucket a livello di zona.
- Leggi e aggiungi oggetti nei bucket a livello di zona.
- Connettività diretta per Cloud Storage.
- Scopri di più sui download di oggetti suddivisi.
- Rendimento di Cloud Storage FUSE per Rapid Bucket.
- Scopri di più sulla gestione delle proprietà di gcloud CLI.