Quando leggi oggetti da bucket zonali in Rapid Bucket utilizzando Google Cloud CLI, la CLI applica automaticamente le configurazioni predefinite di concorrenza e suddivisione in base alle risorse di sistema disponibili.
Questo documento descrive queste configurazioni predefinite e spiega come ottimizzare le prestazioni dell'interfaccia alla gcloud CLI per carichi di lavoro specifici configurando la concorrenza, lo scaling dei processi e le funzionalità di attivazione, come l'isolamento NIC.
Prima di modificare le impostazioni delle prestazioni, devi creare un bucket zonale. Se scarichi oggetti in un volume di archiviazione collegato, ad esempio Hyperdisk o SSD locale, formatta e monta il volume nel tuo ambiente. Se prevedi di montare i bucket zonali come file system anziché utilizzare gcloud CLI, consulta Prestazioni di Cloud Storage FUSE per Rapid Bucket. Per i concetti generali di suddivisione, vedi Download di oggetti suddivisi.
Configurazioni predefinite di concorrenza e suddivisione
Le configurazioni predefinite descritte in questa sezione si applicano in modo specifico quando leggi oggetti da bucket 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 di zona, gcloud CLI imposta automaticamente i parametri di concorrenza e suddivisione predefiniti in base al numero di core della CPU virtuale (vCPU) disponibili e al download di un singolo oggetto o di più oggetti. Questi valori predefiniti configurano le seguenti proprietà:
- Conteggio processi:
storage/process_count - Numero di fili:
storage/thread_count - Soglia di segmentazione:
storage/sliced_object_download_threshold - Componenti massimi:
storage/sliced_object_download_max_components - Dimensioni del componente:
storage/sliced_object_download_component_size
Le sezioni seguenti elencano i valori predefiniti per i download di singoli oggetti e di più oggetti.
Download di un singolo oggetto
Quando scarichi un singolo oggetto, gcloud CLI applica i seguenti valori predefiniti:
| vCPU disponibili | Conteggio processi | Conteggio thread | Soglia di suddivisione | Componenti massimi | Dimensioni del 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, la gcloud CLI applica i seguenti valori predefiniti:
| vCPU disponibili | Conteggio processi | Conteggio thread | Soglia di suddivisione | Componenti massimi | Dimensioni del 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 |
Configurare le proprietà di concorrenza e suddivisione
Per configurare e applicare le impostazioni di ottimizzazione personalizzate, completa i seguenti passaggi:
Installa o aggiorna Google Cloud CLI alla versione 583.0.0 o successiva.
Nel tuo ambiente di sviluppo, esegui il comando
gcloud config configurations createper 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 quanto segue:
THREAD_COUNT: il numero di thread per processo di lavoro, ad esempio1.PROCESS_COUNT: il numero di processi di lavoro, ad esempio64.THRESHOLD_SIZE: la soglia minima per le dimensioni degli oggetti per attivare lo slicing, ad esempio128 MiBper i carichi di lavoro di più gigabyte (o32 MiBper gli oggetti più piccoli).COMPONENT_SIZE: le dimensioni target di ogni sezione di download, ad esempio128 MiBper carichi di lavoro di più gigabyte (o32 MiBper oggetti più piccoli).MAX_COMPONENTS: il numero massimo di componenti di slice per oggetto, ad esempio16.
Per saperne di più su queste proprietà, consulta la sezione Ottimizzazione dei suggerimenti.
Per scaricare gli oggetti nel percorso di archiviazione locale, esegui il comando
gcloud storage cp:gcloud storage cp -r gs://BUCKET_NAME/SOURCE_PATH LOCAL_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.LOCAL_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
Utilizza i seguenti consigli per ottimizzare la concorrenza, lo slicing e le risorse di sistema per i tuoi workload.
Conteggio processi
Imposta la proprietà storage/process_count per scalare i processi worker paralleli in base ai core della CPU disponibili. Limita il conteggio dei processi a un massimo dell'80% dei core CPU disponibili:
storage/process_count = min(target_cores, 0.8 * available_cores)
Dove:
target_cores: il numero di core CPU o processi di lavoro che vuoi allocare per il trasferimento (ad esempio64).available_cores: il numero totale di CPU virtuali (vCPU) disponibili sulla tua macchina (ad esempio eseguendonprocsu Linux).
Ad esempio, se il target è 64 processi worker su una macchina con 80 o più vCPU, imposta storage/process_count su 64. Su una macchina con meno di 80 vCPU, imposta storage/process_count sull'80% delle vCPU disponibili (ad esempio, 51 su una VM con 64 vCPU).
Conteggio 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 48 o più vCPU riduce 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 necessaria per attivare i download suddivisi.
Ti consigliamo di impostare storage/sliced_object_download_threshold su un valore
maggiore o uguale a storage/sliced_object_download_component_size.
Sezioni per oggetto
Imposta le proprietà storage/sliced_object_download_component_size e
storage/sliced_object_download_max_components per controllare il
numero di sezioni parallele generate per oggetto. gcloud CLI
calcola le sezioni 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 max_components parti uguali. Ad esempio, il download di un oggetto da 100 GiB con
component_size=128 MiB e max_components=16 produce 16 segmenti da
6,25 GiB ciascuno.
gcloud CLI scarica ogni slice 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, devi regolare il conteggio dei processi, il conteggio dei thread, la dimensione dei componenti e il numero massimo di componenti. Questi aggiustamenti assicurano che i trasferimenti tipici generino un numero totale di segmenti sufficiente a raggiungere o superare la capacità totale dei lavoratori:
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
component_size=128 MiBgenera 16 sezioni per oggetto (4 × 16 = 64 sezioni), che utilizzano completamente tutti i 64 processi di lavoro. - Quattro oggetti da 512 MiB: l'impostazione
component_size=32 MiBgenera 16 sezioni per oggetto (4 × 16 = 64 sezioni), che utilizzano completamente tutti i 64 processi worker. Al contrario, l'utilizzo dicomponent_size=128 MiBsu oggetti da 512 MiB produce solo 4 segmenti per oggetto (16 segmenti totali), lasciando 48 processi di lavoro inattivi.
Isolamento NIC
Sulle macchine Linux con più di 16 core CPU, puoi attivare l'isolamento della scheda di interfaccia di rete (NIC) impostando la proprietà storage/use_nic_isolation su True:
gcloud config set storage/use_nic_isolation True
Quando abiliti 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 interruzione hardware di rete (IRQ) e riserva i core rimanenti per
l'elaborazione dei dati.
Passaggi successivi
- Scopri di più su Rapid Bucket.
- Crea bucket zonali.
- Leggere e aggiungere oggetti nei bucket a livello di zona.
- Comprendi la connettività diretta per Cloud Storage.
- Informazioni sui download di oggetti suddivisi.
- Ottimizza le prestazioni di Cloud Storage FUSE per Rapid Bucket.
- Gestisci le proprietà di gcloud CLI.