Quando leggi oggetti dai bucket a livello di zona in Rapid Bucket utilizzando Google Cloud CLI, l'interfaccia a riga di comando applica automaticamente le configurazioni di concorrenza e suddivisione predefinite in base alle risorse di sistema disponibili.
Questo documento descrive queste configurazioni predefinite e spiega come ottimizzare le prestazioni di gcloud CLI per workload specifici configurando la concorrenza, la scalabilità dei processi e le funzionalità di attivazione, come l'isolamento della NIC.
Prima di ottimizzare le impostazioni delle prestazioni, devi creare un bucket a livello di zona. 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 di zona come file system anziché utilizzare gcloud CLI, consulta Prestazioni di Cloud Storage FUSE per Rapid Bucket. Per i concetti generali di suddivisione, consulta 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 dai 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 contemporaneità predefinite.
Per i bucket a livello di zona, gcloud CLI imposta automaticamente i parametri di concorrenza e suddivisione predefiniti in base al numero di core di CPU virtuale (vCPU) disponibili e al fatto che tu scarichi un singolo oggetto o più oggetti. Queste impostazioni predefinite configurano le seguenti proprietà:
- Numero di processi:
storage/process_count - Numero di thread:
storage/thread_count - Slicing threshold:
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 oggetti singoli e multipli.
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, 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 |
Configura 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.
Nell'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 tuo 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 worker, ad esempio1.PROCESS_COUNT: il numero di processi worker, ad esempio64.THRESHOLD_SIZE: la soglia minima delle dimensioni dell'oggetto per attivare lo slicing, ad esempio128 MiBper workload di più gigabyte (o32 MiBper oggetti più piccoli).COMPONENT_SIZE: la dimensione target di ogni sezione di download, ad esempio128 MiBper workload di più gigabyte (o32 MiBper oggetti più piccoli).MAX_COMPONENTS: il numero massimo di componenti di suddivisione per oggetto, ad esempio16.
Per saperne di più su queste proprietà, consulta la sezione Ottimizzazione dei suggerimenti.
Per scaricare 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/).
Ottimizzazione dei suggerimenti
Utilizza i seguenti suggerimenti 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 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 esempio64).available_cores: il numero totale di CPU virtuali (vCPU) disponibili sulla tua macchina (ad esempio, eseguendonprocsu Linux).
Ad esempio, se il tuo 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.
La limitazione di ogni processo worker a un singolo thread su 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 richiesta per attivare i download suddivisi.
Ti consigliamo di impostare storage/sliced_object_download_threshold su un valore
uguale o superiore 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 modo uniforme in max_components sezioni. Ad esempio, il download di un oggetto da 100 GiB con component_size=128 MiB e max_components=16 produce 16 sezioni da 6,25 GiB ciascuna.
gcloud CLI scarica ogni sezione 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 utilizzo elevato dei worker durante un trasferimento, devi regolare il conteggio dei processi, il conteggio dei thread, le dimensioni dei componenti e il numero massimo di componenti. Questi aggiustamenti garantiscono che i trasferimenti tipici generino un numero di sezioni totali sufficiente per eguagliare o superare la 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
component_size=128 MiBgenera 16 sezioni per oggetto (4 × 16 = 64 sezioni), che utilizza completamente tutti i 64 processi worker. - 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 sezioni per oggetto (16 sezioni in totale), 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 proprietà storage/use_nic_isolation su True:
gcloud config set storage/use_nic_isolation True
Quando attivi questa proprietà, gcloud CLI imposta l'affinità CPU (os.sched_setaffinity()). Questa configurazione isola il 10% dei core della CPU per le richieste di interruzione (IRQ) dell'hardware di rete e riserva i core rimanenti per il trattamento 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.
- Comprendi la connettività diretta per Cloud Storage.
- Ottimizza le prestazioni di Cloud Storage FUSE per Rapid Bucket.
- Gestisci le proprietà di gcloud CLI.