Ao ler objetos de buckets zonais no Rapid Bucket usando a Google Cloud CLI, ela aplica automaticamente a simultaneidade padrão e configurações de segmentação com base nos recursos disponíveis do sistema.
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 isolamento de NIC.
Antes de ajustar as configurações de performance, crie um bucket zonal. Se você baixar 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 Performance do Cloud Storage FUSE para Rapid Bucket. Para conceitos gerais de segmentação, consulte Downloads de objetos segmentados.
Configurações padrão de simultaneidade e segmentação
As configurações padrão descritas nesta seção se aplicam especificamente quando você lê objetos de buckets zonais no 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 segmentação com base no número de núcleos de CPU virtual (vCPU) disponíveis e se você baixa um ou vários objetos. Esses padrões configuram as seguintes propriedades:
- Contagem de processos:
storage/process_count - Contagem de linhas de execução:
storage/thread_count - Limite de segmentação:
storage/sliced_object_download_threshold - Máximo de componentes:
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 um único objeto e de vários objetos.
Downloads de um único objeto
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 segmentação | Máximo de componentes | 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 segmentação | Máximo de componentes | 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 segmentaçã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 comando
gcloud config configurations createpara 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 a simultaneidade e as propriedades de segmentaçã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 linhas de execução 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 o fatiamento, 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 no caminho de armazenamento local, execute o comando
gcloud storage cp: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, o particionamento 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 sua transferência (como64).available_cores: o número total de CPUs virtuais (vCPUs) disponíveis na sua máquina. Por exemplo, executenprocno Linux.
Por exemplo, se a meta 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 linhas de execução
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 linha de execução em máquinas com 48 ou mais vCPUs reduz a disputa de linha de execução do bloqueio global do interpretador (GIL, na sigla em inglês) do Python e do gRPC.
Limite de segmentação
Defina a propriedade storage/sliced_object_download_threshold para especificar
o tamanho mínimo do objeto necessário para acionar downloads segmentados.
Recomendamos definir storage/sliced_object_download_threshold como um valor igual ou maior que storage/sliced_object_download_component_size.
Setores por objeto
Defina as propriedades storage/sliced_object_download_component_size e storage/sliced_object_download_max_components para controlar o número de intervalos paralelos gerados 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 max_components partes. Por exemplo, o download de um objeto de 100 GiB com
component_size=128 MiB e max_components=16 produz 16 partes de
6,25 GiB cada.
A CLI gcloud faz o download de cada fração de forma independente e paralela com base na capacidade total de trabalhadores (storage/process_count × storage/thread_count).
Saturação de worker
Para manter uma alta utilização do worker durante uma transferência, ajuste a contagem de processos e de linhas de execução, o tamanho do componente e o número máximo de componentes. Esses ajustes garantem que as transferências típicas gerem fatias totais suficientes para igualar ou exceder a capacidade total de trabalhadores:
Total slices across all objects >= storage/process_count * storage/thread_count
Por exemplo, considere o download de quatro objetos usando 64 processos de trabalho (process_count=64 e thread_count=1):
- Quatro objetos de 2 GiB: a definição de
component_size=128 MiBgera 16 segmentos por objeto (4 × 16 = 64 segmentos), o que utiliza totalmente todos os 64 processos de trabalho. - Quatro objetos de 512 MiB: a configuração
component_size=32 MiBgera 16 divisões por objeto (4 × 16 = 64 divisões), o que utiliza totalmente todos os 64 processos de trabalho. Por outro lado, usarcomponent_size=128 MiBem objetos de 512 MiB produz apenas quatro frações por objeto (16 frações no total), deixando 48 processos de worker inativos.
Isolamento da placa de rede
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 de CPU
(os.sched_setaffinity()). Essa configuração isola 10% dos núcleos de CPU para
solicitações de interrupção de hardware de rede (IRQs) e reserva os núcleos restantes para
processamento de dados.