Cuando lees objetos de buckets zonales en Rapid Bucket con la Google Cloud CLI, la CLI aplica automáticamente la simultaneidad predeterminada y las configuraciones de segmentación según los recursos del sistema disponibles.
En este documento, se describen estas configuraciones predeterminadas y se explica cómo ajustar el rendimiento de gcloud CLI para cargas de trabajo específicas configurando la simultaneidad, el ajuste de procesos y las funciones opcionales, como el aislamiento de NIC.
Antes de ajustar la configuración de rendimiento, debes crear un bucket zonal. Si descargas objetos en un volumen de almacenamiento conectado, como Hyperdisk o SSD local, formatea y activa el volumen en tu entorno. Si planeas activar buckets zonales como un sistema de archivos en lugar de usar gcloud CLI, consulta Rendimiento de Cloud Storage FUSE para Rapid Bucket. Para conocer los conceptos generales sobre el segmentado, consulta Descargas de objetos segmentados.
Configuraciones predeterminadas de simultaneidad y segmentación
Las configuraciones predeterminadas que se describen en esta sección se aplican específicamente cuando lees objetos de buckets zonales en Rapid Bucket con la versión 583.0.0 o posterior de la gcloud CLI. En el caso de los buckets estándar de Cloud Storage, gcloud CLI aplica su propia configuración predeterminada de simultaneidad.
En el caso de los buckets zonales, gcloud CLI establece automáticamente los parámetros predeterminados de simultaneidad y segmentación según la cantidad de núcleos de CPU virtuales (vCPU) disponibles y si descargas un solo objeto o varios. Estos valores predeterminados configuran las siguientes propiedades:
- Recuento de procesos:
storage/process_count - Cantidad de subprocesos:
storage/thread_count - Umbral de segmentación:
storage/sliced_object_download_threshold - Máx. de componentes:
storage/sliced_object_download_max_components - Tamaño del componente:
storage/sliced_object_download_component_size
En las siguientes secciones, se indican los valores predeterminados para las descargas de un solo objeto y de varios objetos.
Descargas de un solo objeto
Cuando descargas un solo objeto, gcloud CLI aplica los siguientes valores predeterminados:
| CPU virtuales disponibles | Recuento de procesos | Recuento de subprocesos | Umbral de segmentació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 descargas varios objetos de forma simultánea, gcloud CLI aplica los siguientes valores predeterminados:
| CPU virtuales disponibles | Recuento de procesos | Recuento de subprocesos | Umbral de segmentació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 |
Configura las propiedades de simultaneidad y segmentación
Para configurar y aplicar parámetros de configuración personalizados, completa los siguientes pasos:
Instala o actualiza Google Cloud CLI a la versión 583.0.0 o una posterior.
En tu entorno de desarrollo, ejecuta el comando
gcloud config configurations createpara 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 comando
gcloud config setpara configurar las propiedades de simultaneidad y segmentació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 lo siguiente:
THREAD_COUNT: Es la cantidad de subprocesos por proceso de trabajo, como1.PROCESS_COUNT: Es la cantidad de procesos de trabajadores, como64.THRESHOLD_SIZE: Es el umbral de tamaño mínimo del objeto para activar el segmentado, 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 segmentación por objeto, como16.
Para obtener más información sobre estas propiedades, consulta Ajuste de recomendaciones.
Para descargar objetos en la ruta de acceso de tu almacenamiento local, ejecuta el comando
gcloud storage cp:gcloud storage cp -r gs://BUCKET_NAME/SOURCE_PATH LOCAL_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 al objeto en tu bucket.LOCAL_DESTINATION_PATH: Es la ruta de acceso a tu directorio local (como./data/) o el punto de activación de tu volumen de almacenamiento local (como/mnt/hyperdisk/data/).
Ajusta las recomendaciones
Usa las siguientes recomendaciones para ajustar la simultaneidad, la segmentación y los recursos del sistema para tus cargas de trabajo.
Recuento de procesos
Configura la propiedad storage/process_count para ajustar los procesos de trabajadores paralelos según 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 (por ejemplo,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 tener 64 procesos de trabajador en una máquina con 80 o más CPU virtuales, establece storage/process_count en 64. En una máquina con menos de 80 CPU virtuales, establece storage/process_count en el 80% de las CPU virtuales disponibles (por ejemplo, 51 en una VM con 64 CPU virtuales).
Recuento de subprocesos
Establece la propiedad storage/thread_count para controlar la cantidad de subprocesos por proceso de trabajador. En las máquinas con 48 o más CPU virtuales, configura storage/thread_count como 1.
Restringir cada proceso de trabajador a un solo subproceso en máquinas con 48 o más CPU virtuales reduce la contención del bloqueo del intérprete global (GIL) de Python y del subproceso de gRPC.
Umbral de segmentación
Establece la propiedad storage/sliced_object_download_threshold para especificar el tamaño mínimo del objeto necesario para activar las descargas segmentadas.
Te recomendamos que establezcas storage/sliced_object_download_threshold en un valor igual o superior a storage/sliced_object_download_component_size.
Segmentos por objeto
Establece las propiedades storage/sliced_object_download_component_size y storage/sliced_object_download_max_components para controlar la cantidad de segmentos paralelos que se generan por objeto. Gcloud CLI calcula las segmentaciones 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 dividirlo según el valor de component_size supere el valor de max_components, la gcloud CLI ignorará el valor de component_size y dividirá el objeto de manera uniforme en max_components partes. Por ejemplo, descargar un objeto de 100 GiB con component_size=128 MiB y max_components=16 produce 16 segmentos de 6.25 GiB cada uno.
Gcloud CLI descarga cada segmento de forma independiente y en paralelo según tu capacidad total de trabajadores (storage/process_count × storage/thread_count).
Saturación de trabajadores
Para mantener un uso alto de los trabajadores durante toda la transferencia, debes ajustar el recuento de procesos, el recuento de subprocesos, el tamaño del componente y la cantidad máxima de componentes. Estos ajustes garantizan que las transferencias típicas generen suficientes segmentos totales como 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: El parámetro de configuración
component_size=128 MiBgenera 16 segmentos por objeto (4 × 16 = 64 segmentos), lo que utiliza por completo los 64 procesos de trabajadores. - Cuatro objetos de 512 MiB: Establecer
component_size=32 MiBgenera 16 segmentos por objeto (4 × 16 = 64 segmentos), lo que utiliza por completo los 64 procesos de trabajadores. En cambio, si usascomponent_size=128 MiBen objetos de 512 MiB, se producen solo 4 segmentos por objeto (16 segmentos en total), lo que deja 48 procesos de trabajadores inactivos.
Aislamiento de la NIC
En las máquinas Linux con más de 16 núcleos de CPU, puedes habilitar el aislamiento de la tarjeta de interfaz de red (NIC) configurando 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 la CPU (os.sched_setaffinity()). Esta configuración aísla el 10% de los núcleos de la 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 más información sobre Rapid Bucket.
- Crea buckets zonales.
- Leer y agregar datos a objetos en buckets zonales
- Comprende la conectividad directa para Cloud Storage.
- Comprende las descargas de objetos divididos.
- Ajusta el rendimiento de Cloud Storage FUSE para Rapid Bucket.
- Administra gcloud CLI de gcloud.