Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
OpenPBS se puede habilitar fácilmente en un clúster de CycleCloud modificando la "run_list", en la sección de configuración de la definición del clúster. Un clúster de PBS Professional (PBS Pro) tiene dos partes principales: el nodo "master", que ejecuta el software en un sistema de archivos compartido y los nodos "execute", que montan ese sistema de archivos y ejecutan los trabajos enviados. Por ejemplo, un fragmento de código de plantilla de clúster simple puede tener el siguiente aspecto:
[cluster my-pbspro]
[[node master]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[pbspro_master_role]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A1 # 1 core
[[[configuration]]]
run_list = role[pbspro_execute_role]
La importación e inicio de un clúster con definición en CycleCloud produce un único nodo "maestro". Los nodos de ejecución se pueden agregar al clúster mediante el cyclecloud add_node
comando . Por ejemplo, para agregar 10 nodos de ejecución más:
cyclecloud add_node my-pbspro -t execute -c 10
Escalado automático basado en recursos de PBS
Cyclecloud mantiene dos recursos para expandir la funcionalidad de aprovisionamiento dinámico. Estos recursos son nodearray y machinetype.
Si envía un trabajo y especifica un recurso de matriz de nodos mediante qsub -l nodearray=highmem -- /bin/hostname
, CycleCloud agrega nodos a la matriz de nodos llamada 'highmem'. Si no existe dicho "nodearray", el trabajo permanece inactivo.
Del mismo modo, si se especifica un recurso de tipo de máquina en el que se especifica un envío de trabajo, por ejemplo, qsub -l machinetype:Standard_L32s_v2 my-job.sh
, CycleCloud escala automáticamente el "Standard_L32s_v2" en el elemento de la matriz de nodos "execute" (predeterminado). Si ese tipo de máquina no está disponible en la matriz de nodos "execute", el trabajo permanece inactivo.
Estos recursos se pueden usar en combinación como:
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
Que escala automáticamente solo si las máquinas “Standard_HB60rs” se especifican en la matriz de nodos “hpc”.
Agregar colas adicionales asignadas a matrices de nodos
En los clústeres con varias configuraciones de nodearrays, es habitual crear colas independientes para enrutar automáticamente los trabajos al tipo de máquina virtual adecuado. En este ejemplo, se supone que la siguiente matriz de nodos "gpu" se define en la plantilla de clúster:
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
Después de importar la plantilla de clúster e iniciar el clúster, se pueden ejecutar los siguientes comandos en el nodo de servidor para crear la cola "gpu":
/opt/pbs/bin/qmgr -c "create queue gpu"
/opt/pbs/bin/qmgr -c "set queue gpu queue_type = Execution"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.place = scatter"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu enabled = true"
/opt/pbs/bin/qmgr -c "set queue gpu started = true"
Nota:
Como se muestra en el ejemplo, la definición de cola empaqueta todas las máquinas virtuales de la cola en un único conjunto de escalado de máquinas virtuales para admitir trabajos de MPI. Para definir la cola para trabajos en serie y permitir varios conjuntos de escalado de máquinas virtuales, establezca ungrouped = true
tanto para resources_default
y default_chunk
. También puede establecer resources_default.place = pack
si desea que el programador empaquete trabajos en máquinas virtuales en lugar de la asignación round robin de trabajos. Para obtener más información sobre el empaquetado de trabajos de PBS, consulte la documentación oficial de PBS Professional OSS.
Referencia de configuración profesional de PBS
A continuación se muestran las opciones de configuración específicas de PBS Professional (PBS Pro) que puede alternar para personalizar la funcionalidad:
Opciones de PBS Pro | Descripción |
---|---|
pbspro.slots | Número de ranuras de un nodo determinado que se va a notificar a PBS Pro. El número de ranuras es el número de trabajos simultáneos que un nodo puede ejecutar, este valor tiene como valor predeterminado el número de CPU de una máquina determinada. Puede invalidar este valor en casos en los que no ejecute trabajos basados en cpu, sino en memoria, GPU, etc. |
pbspro.slot_type | El nombre del tipo de ranura que proporciona un nodo. El valor predeterminado es "execute". Cuando un trabajo está etiquetado con el recurso slot_type=<type> fijo, ese trabajo solo se ejecuta en una máquina del mismo tipo de ranura. Permite crear configuraciones de software y hardware diferentes por nodo y asegurarse de que un trabajo adecuado esté siempre programado en el tipo correcto de nodo. |
pbspro.version | Valor predeterminado: '18.1.3-0'. Esta es actualmente la versión predeterminada y solo la opción para instalar y ejecutar. Esta es actualmente la versión predeterminada y la única opción. En el futuro se pueden admitir más versiones del software PBS Pro. |
Conexión de PBS con CycleCloud
CycleCloud administra los clústeres de OpenPBS a través de un agente instalable denominado azpbs
. Este agente se conecta a CycleCloud para leer configuraciones de clúster y máquina virtual y también se integra con OpenPBS para procesar eficazmente la información del trabajo y del host. Todas las azpbs
configuraciones se encuentran en el autoscale.json
archivo, normalmente /opt/cycle/pbspro/autoscale.json
.
"password": "260D39rWX13X",
"url": "https://cyclecloud1.contoso.com",
"username": "cyclecloud_api_user",
"logging": {
"config_file": "/opt/cycle/pbspro/logging.conf"
},
"cluster_name": "mechanical_grid",
Archivos importantes
El agente azpbs
analiza la configuración de PBS cada vez que se llama: trabajos, colas y recursos. La información se proporciona en stderr y stdout del comando, así como, en un archivo de registro, ambos en niveles configurables. Todos los comandos de administración de PBS (qcmd
) con argumentos también se registran en el archivo.
Todos estos archivos se pueden encontrar en el directorio /opt/cycle/pbspro/ donde está instalado el agente.
Archivo | Ubicación | Descripción |
---|---|---|
Configuración de escalabilidad automática | autoscale.json | Configuración del escalado automático, mapa de recursos, información de acceso de CycleCloud |
Registro de escalabilidad automática | autoscale.log | Registro principal de subprocesos del agente, incluida la administración de hosts de CycleCloud |
Registro de demanda | demand.log | Registro detallado para la coincidencia de recursos |
qcmd Trace Log | qcmd.log | Registro de las llamadas del agente qcmd |
Configuración de registro | logging.conf | Configuraciones de máscaras de registro y ubicaciones de archivos |
Definición de recursos de OpenPBS
Este proyecto permite la asociación general de recursos de OpenPBS con recursos de máquina virtual de Azure a través del proyecto cyclecloud-pbspro (azpbs). La relación de recursos está definida en autoscale.json
.
Los recursos predeterminados definidos con la plantilla de clúster que enviamos son
{"default_resources": [
{
"select": {},
"name": "ncpus",
"value": "node.vcpu_count"
},
{
"select": {},
"name": "group_id",
"value": "node.placement_group"
},
{
"select": {},
"name": "host",
"value": "node.hostname"
},
{
"select": {},
"name": "mem",
"value": "node.memory"
},
{
"select": {},
"name": "vm_size",
"value": "node.vm_size"
},
{
"select": {},
"name": "disk",
"value": "size::20g"
}]
}
El recurso OpenPBS denominado mem
se equivale a un atributo de nodo denominado node.memory
, que es la memoria total de cualquier máquina virtual. Esta configuración permite azpbs
procesar una solicitud de recursos, como -l mem=4gb
comparando el valor de los requisitos de recursos de trabajo con los recursos de nodo.
Actualmente, el tamaño del disco está codificado de forma dura en size::20g
. Este es un ejemplo de control del tamaño de disco específico del tamaño de máquina virtual
{
"select": {"node.vm_size": "Standard_F2"},
"name": "disk",
"value": "size::20g"
},
{
"select": {"node.vm_size": "Standard_H44rs"},
"name": "disk",
"value": "size::2t"
}
Escalado automático y conjuntos de escalado
CycleCloud trata los trabajos paralelos y en serie de manera diferente en los clústeres de OpenPBS. La expansión de trabajos se colocará en nodos que forman parte del mismo grupo de selección de ubicación. El grupo de colocación tiene una plataforma particular (VirtualMachineScaleSet con SinglePlacementGroup=true) y CycleCloud administra un grupo de colocación con nombre para cada conjunto de nodos extendidos. Use el recurso group_id
de PBS para este nombre de grupo de selección de colocación.
La hpc
cola anexa el equivalente de mediante valores predeterminados de -l place=scatter:group=group_id
cola nativa.
Instalación del agente openPBS de CycleCloud azpbs
El clúster de OpenPBS CycleCloud administra la instalación y configuración del agente en el nodo de servidor. La preparación incluye la configuración de recursos, colas y enlaces de PBS. También se puede realizar una instalación con script fuera de CycleCloud.
# Prerequisite: python3, 3.6 or newer, must be installed and in the PATH
wget https://github.com/Azure/cyclecloud-pbspro/releases/download/2.0.5/cyclecloud-pbspro-pkg-2.0.5.tar.gz
tar xzf cyclecloud-pbspro-pkg-2.0.5.tar.gz
cd cyclecloud-pbspro
# Optional, but recommended. Adds relevant resources and enables strict placement
./initialize_pbs.sh
# Optional. Sets up workq as a colocated, MPI focused queue and creates htcq for non-MPI workloads.
./initialize_default_queues.sh
# Creates the azpbs autoscaler
./install.sh --venv /opt/cycle/pbspro/venv
# Otherwise insert your username, password, url, and cluster name here.
./generate_autoscale_json.sh --install-dir /opt/cycle/pbspro \
--username user \
--password password \
--url https://fqdn:port \
--cluster-name cluster_name
azpbs validate
CycleCloud admite un conjunto estándar de atributos de detención automática en los planificadores.
Atributo | Descripción |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | ¿Está habilitado el autostop en este nodo? [verdadero/falso] |
cyclecloud.cluster.autoscale.tiempo_inactivo_después_de_tareas | Cantidad de tiempo (en segundos) que un nodo permanece inactivo después de completar los trabajos antes de ser reducido de escala. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Cantidad de tiempo (en segundos) que un nodo permanece inactivo tras completar trabajos antes de ser reducido. |
Nota:
CycleCloud no admite la configuración de expansión con Open PBS.
Nota:
Aunque Windows es una plataforma open PBS compatible oficialmente, CycleCloud no admite la ejecución de Open PBS en Windows en este momento.