Ao ler objetos de buckets zonais no Rapid Bucket usando a Google Cloud CLI, a CLI aplica automaticamente configurações padrão de simultaneidade e divisão com base nos recursos de sistema disponíveis.
Este documento descreve essas configurações padrão e explica como ajustar o desempenho da CLI gcloud para cargas de trabalho específicas configurando simultaneidade, escalonamento de processos e recursos opcionais, como o isolamento de NIC.
Antes de ajustar as configurações de desempenho, você deve criar um bucket zonal. Se você fizer o download de objetos para um volume de armazenamento anexado, como Hyperdisk ou SSD local, formate e ative o volume no seu ambiente. Se você planeja ativar buckets zonais como um sistema de arquivos em vez de usar a CLI gcloud, consulte Desempenho do Cloud Storage FUSE para o Rapid Bucket. Para conceitos gerais de divisão, consulte Downloads de objetos divididos.
Configurações padrão de simultaneidade e divisão
As configurações padrão descritas nesta seção se aplicam especificamente quando você lê objetos de buckets zonais em Rapid Bucket usando a CLI gcloud versão 583.0.0 ou mais recente. Para buckets padrão do Cloud Storage, a CLI gcloud aplica as próprias configurações de simultaneidade padrão.
Para buckets zonais, a CLI gcloud define automaticamente os parâmetros padrão de simultaneidade e divisão com base no número de núcleos de CPU virtual (vCPU) disponíveis e se você faz o download de um ou vários objetos. Esses padrões configuram as seguintes propriedades:
- Contagem de processos:
storage/process_count - Contagem de threads:
storage/thread_count - Limite de divisão:
storage/sliced_object_download_threshold - Componentes máximos:
storage/sliced_object_download_max_components - Tamanho do componente:
storage/sliced_object_download_component_size
As seções a seguir listam os valores padrão para downloads de objeto único e de vários objetos.
Downloads de objeto único
Ao fazer o download de um único objeto, a CLI gcloud aplica os seguintes valores padrão:
| vCPUs disponíveis | Contagem de processos | Contagem de threads | Limite de divisão | Componentes máximos | Tamanho do componente |
|---|---|---|---|---|---|
≥ 8 |
8 |
2 |
50 MiB |
16 |
5 MiB |
< 8 |
4 |
2 |
50 MiB |
8 |
5 MiB |
Downloads de vários objetos
Ao fazer o download de vários objetos simultaneamente, a CLI gcloud aplica os seguintes valores padrão:
| vCPUs disponíveis | Contagem de processos | Contagem de threads | Limite de divisão | Componentes máximos | Tamanho do 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 |
Configurar propriedades de simultaneidade e divisão
Para configurar e aplicar configurações de ajuste personalizadas, siga estas etapas:
Instale ou atualize a Google Cloud CLI para a versão 583.0.0 ou mais recente.
No ambiente de desenvolvimento, execute o
gcloud config configurations createcomando para criar e ativar um perfil de configuração:gcloud config configurations create CONFIGURATION_NAME
Substitua
CONFIGURATION_NAMEpor um nome para o perfil de configuração, comorapid-perf.Execute o comando
gcloud config setpara configurar as propriedades de simultaneidade e divisão: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
Substitua:
THREAD_COUNT: o número de threads por processo de worker, como1.PROCESS_COUNT: o número de processos de worker, como64.THRESHOLD_SIZE: o limite mínimo de tamanho do objeto para acionar a divisão, como128 MiBpara cargas de trabalho de vários gigabytes (ou32 MiBpara objetos menores).COMPONENT_SIZE: o tamanho de destino de cada fração de download, como128 MiBpara cargas de trabalho de vários gigabytes (ou32 MiBpara objetos menores).MAX_COMPONENTS: o número máximo de componentes de fração por objeto, como16.
Para mais informações sobre essas propriedades, consulte Recomendações de ajuste.
Para fazer o download de objetos para o caminho de armazenamento local, execute o
gcloud storage cpcomando:gcloud storage cp -r gs://BUCKET_NAME/SOURCE_PATH LOCAL_DESTINATION_PATH
Substitua:
BUCKET_NAME: o nome do bucket zonal.SOURCE_PATH: o diretório de origem ou o caminho do objeto no bucket.LOCAL_DESTINATION_PATH: o caminho do diretório local (como./data/) ou o ponto de montagem do volume de armazenamento local (como/mnt/hyperdisk/data/).
Recomendações de ajuste
Use as recomendações a seguir para ajustar a simultaneidade, a divisão e os recursos do sistema para suas cargas de trabalho.
Contagem de processos
Defina a propriedade storage/process_count para escalonar processos de worker
paralelos com base nos núcleos de CPU disponíveis. Limite a contagem de processos a um máximo de 80% dos núcleos de CPU disponíveis:
storage/process_count = min(target_cores, 0.8 * available_cores)
Em que:
target_cores: o número de núcleos de CPU ou processos de worker que você quer alocar para a transferência (como64).available_cores: o número total de CPUs virtuais (vCPUs) disponíveis na máquina (por exemplo, executandonprocno Linux).
Por exemplo, se o destino for 64 processos de worker em uma máquina com 80 ou mais vCPUs, defina storage/process_count como 64. Em uma máquina com menos de 80 vCPUs, defina storage/process_count como 80% das vCPUs disponíveis (por exemplo, 51 em uma VM de 64 vCPUs).
Contagem de threads
Defina a propriedade storage/thread_count para controlar o número de threads
por processo de worker. Em máquinas com 48 ou mais vCPUs, defina storage/thread_count como 1.
Restringir cada processo de worker a uma única thread em máquinas com 48 ou mais vCPUs reduz a contenção de threads do Python Global Interpreter Lock (GIL) e do gRPC.
Limite de divisão
Defina a propriedade storage/sliced_object_download_threshold para especificar
o tamanho mínimo do objeto necessário para acionar downloads divididos.
Recomendamos definir storage/sliced_object_download_threshold como um valor igual ou maior que storage/sliced_object_download_component_size.
Fatias por objeto
Defina as propriedades storage/sliced_object_download_component_size e
storage/sliced_object_download_max_components para controlar o
número de fatias paralelas geradas por objeto. A CLI gcloud calcula as fatias por objeto usando a seguinte fórmula:
Slices per object = min(object_size / component_size, max_components)
Se um objeto for grande o suficiente para que a divisão pelo valor component_size exceda o valor max_components, a CLI gcloud vai ignorar o valor component_size e dividir o objeto igualmente em fatias max_components. Por exemplo, o download de um objeto de 100 GiB com component_size=128 MiB e max_components=16 produz 16 fatias de 6,25 GiB cada.
A CLI gcloud faz o download de cada fatia de forma independente e paralela com base na capacidade total do worker (storage/process_count × storage/thread_count).
Saturação do worker
Para manter a alta utilização do worker durante uma transferência, ajuste a contagem de processos, a contagem de threads, o tamanho do componente e os componentes máximos. Esses ajustes garantem que as transferências típicas gerem fatias totais suficientes para igualar ou exceder a capacidade total do worker:
Total slices across all objects >= storage/process_count * storage/thread_count
Por exemplo, considere o download de quatro objetos usando 64 processos de worker (process_count=64 e thread_count=1):
- Quatro objetos de 2 GiB: definir
component_size=128 MiBgera 16 fatias por objeto (4 × 16 = 64 fatias), que utilizam totalmente todos os 64 processos de worker. - Quatro objetos de 512 MiB: definir
component_size=32 MiBgera 16 fatias por objeto (4 × 16 = 64 fatias), que utilizam totalmente todos os 64 processos de worker. Por outro lado, usarcomponent_size=128 MiBem objetos de 512 MiB produz apenas 4 fatias por objeto (16 fatias no total), deixando 48 processos de worker inativos.
Isolamento de NIC
Em máquinas Linux com mais de 16 núcleos de CPU, é possível ativar o isolamento da placa de interface
de rede (NIC) definindo a propriedade storage/use_nic_isolation
como True:
gcloud config set storage/use_nic_isolation True
Quando você ativa essa propriedade, a CLI gcloud define a afinidade da CPU (os.sched_setaffinity()). Essa configuração isola 10% dos núcleos da CPU para solicitações de interrupção de hardware de rede (IRQs) e reserva os núcleos restantes para processamento de dados.