Cuando la CLI de Google Cloud lee objetos de buckets zonales en Rapid Bucket, aplica automáticamente las configuraciones predeterminadas de simultaneidad y división en función de los recursos del sistema disponibles.
En esta página, se describen estas configuraciones predeterminadas y se explica cómo puedes usar gcloud CLI para ajustar aún más la simultaneidad, el ajuste de escala de procesos y las funciones de participación (como el aislamiento de NIC) para ayudar a mejorar el rendimiento de cargas de trabajo específicas. Para ajustar el rendimiento cuando se activan buckets zonales como un sistema de archivos, consulta Rendimiento de Cloud Storage FUSE para Rapid Bucket.
Antes de configurar los parámetros de configuración de rendimiento, asegúrate de crear un bucket zonal. Si planeas descargar objetos en un volumen de almacenamiento conectado (como Hyperdisk o SSD local), asegúrate de formatear y activar el volumen en tu entorno. Para obtener conceptos generales de división, consulta Descargas de objetos divididos.
Configuraciones predeterminadas de simultaneidad y división
Las configuraciones predeterminadas de esta sección se aplican específicamente cuando se leen objetos de buckets zonales en Rapid Bucket con gcloud CLI versión 583.0.0 o posterior. Para los buckets estándar de Cloud Storage, gcloud CLI aplica su propia configuración predeterminada de simultaneidad.
Para los buckets zonales, gcloud CLI establece automáticamente los parámetros predeterminados de simultaneidad y división en función de la cantidad de núcleos de CPU virtuales (vCPU) disponibles y si descargas un solo objeto o varios. En las siguientes tablas, se asignan valores predeterminados para estas propiedades:
- Recuento de procesos:
storage/process_count - Recuento de subprocesos:
storage/thread_count - Umbral de división:
storage/sliced_object_download_threshold - Cantidad máxima de componentes:
storage/sliced_object_download_max_components - Tamaño del componente:
storage/sliced_object_download_component_size
Descargas de un solo objeto
Cuando se descarga un solo objeto, gcloud CLI aplica los siguientes valores predeterminados:
| CPU virtuales disponibles | Recuento de procesos | Recuento de subprocesos | Umbral de división | Cantidad máxima de componentes | Tamaño del componente |
|---|---|---|---|---|---|
≥ 8 |
8 |
2 |
50 MiB |
16 |
5 MiB |
< 8 |
4 |
2 |
50 MiB |
8 |
5 MiB |
Descargas de varios objetos
Cuando se descargan varios objetos de forma simultánea, gcloud CLI aplica los siguientes valores predeterminados:
| CPU virtuales disponibles | Recuento de procesos | Recuento de subprocesos | Umbral de división | Cantidad máxima de componentes | Tamaño 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 |
Ajusta las configuraciones de simultaneidad y división
En esta sección, se describe cómo configurar los parámetros de configuración de simultaneidad y división con gcloud CLI, y se proporcionan valores recomendados para entornos de hardware comunes.
Cómo aplicar una configuración
Para configurar y aplicar parámetros de configuración de ajuste personalizados, completa los siguientes pasos:
Instala o actualiza Google Cloud CLI a la versión 583.0.0 o posterior.
En tu entorno de desarrollo, ejecuta el
gcloud config configurations createcomando para crear y activar un perfil de configuración:gcloud config configurations create CONFIGURATION_NAME
Reemplaza
CONFIGURATION_NAMEpor un nombre para tu perfil de configuración, comorapid-perf.Ejecuta el
gcloud config setcomando para configurar las propiedades de simultaneidad y división: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
Reemplaza los marcadores de posición por valores adecuados para tu carga de trabajo:
THREAD_COUNT: Es la cantidad de subprocesos por proceso de trabajo, como1.PROCESS_COUNT: Es la cantidad de procesos de trabajo, como64.THRESHOLD_SIZE: Es el umbral mínimo de tamaño de objeto para activar la división, como128 MiBpara cargas de trabajo de varios gigabytes (o32 MiBpara objetos más pequeños).COMPONENT_SIZE: Es el tamaño de destino de cada porción de descarga, como128 MiBpara cargas de trabajo de varios gigabytes (o32 MiBpara objetos más pequeños).MAX_COMPONENTS: Es la cantidad máxima de componentes de división por objeto, como16.
Para obtener más información sobre estas propiedades, consulta Ajusta las recomendaciones.
Para descargar objetos en la ruta de acceso de almacenamiento local, ejecuta el
gcloud storage cpcomando:gcloud storage cp -r gs://BUCKET_NAME/SOURCE_PATH/ /DESTINATION_PATH/
Reemplaza lo siguiente:
BUCKET_NAME: Es el nombre de tu bucket zonal.SOURCE_PATH: Es el directorio del código fuente o la ruta de acceso del objeto en tu bucket.DESTINATION_PATH: Es la ruta de acceso del directorio local, como./data/, o el punto de activación de tu volumen de almacenamiento local, como/mnt/hyperdisk/data/.
Ajusta las recomendaciones
Para elegir valores adecuados para los marcadores de posición en los pasos anteriores, revisa los siguientes lineamientos:
Recuento de procesos
Configura la propiedad storage/process_count para ajustar los procesos de trabajo paralelos en función de los núcleos de CPU disponibles. Limita el recuento de procesos a un máximo del 80% de los núcleos de CPU disponibles:
storage/process_count = min(target_cores, 0.8 * available_cores)
Aquí:
target_cores: Es la cantidad de núcleos de CPU o procesos de trabajo que deseas asignar para tu transferencia (como 64).available_cores: Es la cantidad total de CPU virtuales (vCPU) disponibles en tu máquina (por ejemplo, ejecutandonprocen Linux).
Por ejemplo, si tu objetivo es 64 procesos de trabajo, las máquinas con 80 o más CPU virtuales pueden establecer storage/process_count en 64. Para las máquinas con menos de 80 CPU virtuales, establece storage/process_count en el 80% de los núcleos disponibles (por ejemplo, 51 en una VM de 64 CPU virtuales).
Recuento de subprocesos
Configura la storage/thread_count propiedad para controlar la cantidad de subprocesos
por proceso de trabajo. En máquinas con 48 o más CPU virtuales, establece storage/thread_count en 1.
Restringir cada proceso de trabajo a un solo subproceso en máquinas de alta capacidad de núcleos ayuda a reducir el bloqueo global del intérprete de Python (GIL) y la contención de subprocesos de gRPC.
Umbral de división
Configura la propiedad storage/sliced_object_download_threshold para especificar
el tamaño mínimo de objeto necesario para activar las descargas divididas.
Te recomendamos que establezcas storage/sliced_object_download_threshold en un valor igual o superior a storage/sliced_object_download_component_size.
Divisiones por objeto
Configura las propiedades storage/sliced_object_download_component_size y
storage/sliced_object_download_max_components para controlar la
cantidad de divisiones paralelas generadas por objeto. Gcloud CLI calcula las divisiones por objeto con la siguiente fórmula:
Slices per object = min(object_size / component_size, max_components)
Si un objeto es lo suficientemente grande como para que la división por el valor component_size supere el valor max_components, la gcloud CLI ignora el valor component_size y divide el objeto de manera uniforme en divisiones max_components. Por ejemplo, descargar un objeto de 100 GiB con component_size=128 MiB y max_components=16 produce 16 divisiones de 6.25 GiB cada una.
Cada división se descarga de forma independiente y en paralelo según tu capacidad total de trabajadores (storage/process_count × storage/thread_count).
Saturación de trabajadores
Para ayudar a mantener un uso alto de los trabajadores durante una transferencia, ajusta el recuento de procesos, el recuento de subprocesos, el tamaño del componente y la cantidad máxima de componentes de modo que tus transferencias típicas generen suficientes divisiones totales para igualar o superar tu capacidad total de trabajadores:
Total slices across all objects >= storage/process_count * storage/thread_count
Por ejemplo, considera descargar cuatro objetos con 64 procesos de trabajo (process_count=64 y thread_count=1):
- Cuatro objetos de 2 GiB: Si se establece
component_size=128 MiB, se generan 16 divisiones por objeto (4 × 16 = 64 divisiones), lo que utiliza por completo los 64 procesos de trabajo. - Cuatro objetos de 512 MiB: Si se establece
component_size=32 MiB, se generan 16 divisiones por objeto (4 × 16 = 64 divisiones). Por el contrario, usarcomponent_size=128 MiBen objetos de 512 MiB produce solo 4 divisiones por objeto (16 divisiones en total), lo que deja 48 procesos de trabajo inactivos.
Aislamiento de NIC
En máquinas Linux con más de 16 núcleos de CPU, puedes habilitar el aislamiento de la tarjeta de interfaz de red (NIC) si estableces la propiedad storage/use_nic_isolation
en True:
gcloud config set storage/use_nic_isolation True
Cuando habilitas esta propiedad, gcloud CLI establece la afinidad de CPU (os.sched_setaffinity()). Esta configuración aísla el 10% de los núcleos de CPU para las solicitudes de interrupción de hardware de red (IRQ) y reserva los núcleos restantes para el procesamiento de datos.
¿Qué sigue?
- Obtén información sobre Rapid Bucket.
- Crea buckets zonales.
- Lee y agrega objetos en buckets zonales.
- Conectividad directa para Cloud Storage.
- Obtén información sobre las descargas de objetos divididos.
- Rendimiento de Cloud Storage FUSE para Rapid Bucket.
- Obtén información para administrar gcloud CLI de gcloud.