Ao ler objetos de buckets zonais no Rapid Bucket usando a Google Cloud CLI, a CLI aplica automaticamente as configurações padrão de simultaneidade e divisão com base nos recursos do sistema disponíveis.
Neste documento, descrevemos essas configurações padrão e explicamos como ajustar o desempenho da CLI gcloud para cargas de trabalho específicas configurando simultaneidade, escalonamento de processos e recursos de ativação, como isolamento de placa de rede (NIC).
Antes de ajustar as configurações de desempenho, crie um bucket zonal. Se você fizer o download de objetos para um volume de armazenamento anexado, como Hyperdisk ou SSD local, formate e monte o volume no seu ambiente. Se você planeja montar 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 fatiamento, consulte Downloads de objetos fatiados.
Configurações padrão de simultaneidade e fatiamento
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 fatiamento 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 definem as seguintes propriedades:
- Contagem de processos:
storage/process_count - Contagem de linhas de execução:
storage/thread_count - Limite de fatiamento:
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 objeto único e de vários objetos.
Downloads de objeto único
Quando você faz 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 fatiamento | 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
Quando você faz 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 fatiamento | 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 fatiamento
Para configurar e aplicar as configurações de ajuste personalizado, 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 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 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 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 Como ajustar as recomendações.
Para fazer o download de objetos para o 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 fatiamento 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 no máximo
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 sua 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 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 contenção de linhas de execução do Global Interpreter Lock (GIL) do Python e do gRPC.
Limite de fatiamento
Defina a propriedade storage/sliced_object_download_threshold para especificar
o tamanho mínimo do objeto necessário para acionar downloads fatiados.
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 frações paralelas geradas por objeto. A CLI gcloud
calcula as frações 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 de maneira uniforme 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 frações de
6,25 GiB cada.
A CLI gcloud faz o download de cada fração de forma independente e em paralelo, com base na capacidade total de workers (storage/process_count × storage/thread_count).
Saturação de workers
Para manter uma alta utilização de workers durante uma transferência, ajuste a contagem de processos, a contagem de linhas de execução, o tamanho do componente e o máximo de componentes. 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), o que utiliza 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), o que utiliza totalmente todos os 64 processos de worker. Por outro lado, o uso decomponent_size=128 MiBem objetos de 512 MiB produz apenas quatro frações por objeto (16 frações no total), deixando 48 processos de worker ociosos.
Isolamento de NIC
Em máquinas Linux com mais de 16 núcleos de CPU, é possível ativar o isolamento da placa de rede (NIC, na sigla em inglês) 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.
A seguir
- Saiba mais sobre o Rapid Bucket.
- Criar buckets zonais.
- Ler e anexar a objetos em buckets zonais.
- Entenda a conectividade direta do Cloud Storage.
- Entenda os downloads de objetos divididos.
- Ajuste o desempenho do Cloud Storage FUSE para o Rapid Bucket.
- Gerenciar propriedades da CLI gcloud.