Quando a Google Cloud CLI lê objetos de buckets zonais no Rapid Bucket, ela aplica automaticamente configurações padrão de simultaneidade e divisão com base nos recursos de sistema disponíveis.
Esta página descreve essas configurações padrão e explica como usar a CLI gcloud para ajustar ainda mais a simultaneidade, o escalonamento de processos e os recursos de ativação (como o isolamento de NIC) para ajudar a melhorar a performance de cargas de trabalho específicas. Para ajustar a performance ao ativar buckets zonais como um sistema de arquivos, consulte Performance do Cloud Storage FUSE para o Rapid Bucket.
Antes de configurar as definições de performance, certifique-se de que cria um bucket zonal. Se você planeja fazer o download de objetos para um volume de armazenamento anexado (como o Hyperdisk ou o SSD local), certifique-se de formatar e ativar o volume no seu ambiente. 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 nesta seção se aplicam especificamente ao ler 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 padrão de simultaneidade.
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ê está fazendo o download de um ou vários objetos. As tabelas a seguir mapeiam os valores padrão dessas 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
Downloads de objeto único
Ao fazer o download de um único objeto, a CLI gcloud aplica os seguintes padrões:
| 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 padrões:
| 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 |
Ajustar configurações de simultaneidade e divisão
Esta seção descreve como configurar as definições de simultaneidade e divisão usando a CLI gcloud e fornece valores recomendados para ambientes de hardware comuns.
Como aplicar uma configuração
Para configurar e aplicar definiçõ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 os marcadores de posição por valores adequados à sua carga de trabalho:
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.
Faça o download de objetos para o caminho de armazenamento local executando o
gcloud storage cpcomando:gcloud storage cp -r gs://BUCKET_NAME/SOURCE_PATH/ /DESTINATION_PATH/
Substitua:
BUCKET_NAME: o nome do bucket zonal.SOURCE_PATH: o diretório de origem ou o caminho do objeto no bucket.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
Para escolher valores adequados para os marcadores de posição nas etapas anteriores, revise as diretrizes a seguir:
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 (como 64).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, as máquinas com 80 ou mais vCPUs poderão definir storage/process_count como 64. Para máquinas com menos de 80 vCPUs, defina storage/process_count como 80% dos núcleos 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 de alta capacidade ajuda a reduzir 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.
Cada fatia é baixada de forma independente e paralela com base na capacidade total do worker (storage/process_count × storage/thread_count).
Saturação do worker
Para ajudar a 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 para 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), utilizando 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). 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.
A seguir
- Saiba mais sobre o Rapid Bucket.
- Crie buckets zonais.
- Leia e anexe objetos em buckets zonais.
- Conectividade direta para o Cloud Storage.
- Saiba mais sobre downloads de objetos divididos.
- Performance do Cloud Storage FUSE para o Rapid Bucket.
- Saiba como gerenciar propriedades da CLI gcloud.