Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le type de cluster OpenPBS dans Azure CycleCloud fournit une solution robuste et évolutive pour la gestion des charges de travail de calcul haute performance (HPC) à l’aide de PBS Professional. Cette intégration permet aux utilisateurs de déployer et de gérer des clusters PBS dans le cloud avec une configuration et une automatisation simplifiées. Pour obtenir des instructions détaillées sur la configuration, les fonctionnalités prises en charge et les conseils d’utilisation, reportez-vous à cycleCloud Open PBS et PBS Professional Cluster Project README
Vous pouvez activer OpenPBS sur un cluster CycleCloud en modifiant la run_list section de configuration de votre définition de cluster. Un cluster PBS Professional (PBS Pro) comprend deux parties principales : le nœud principal , qui exécute le logiciel sur un système de fichiers partagé et les nœuds d’exécution , qui montent ce système de fichiers et exécutent les travaux soumis. Par exemple, un extrait de modèle de cluster simple peut ressembler à ceci :
[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]
Lorsque vous importez et démarrez un cluster avec cette définition dans CycleCloud, vous obtenez un nœud principal unique. Vous pouvez ajouter des nœuds d’exécution au cluster à l’aide de la cyclecloud add_node commande. Par exemple, pour ajouter 10 nœuds d’exécution supplémentaires, utilisez :
cyclecloud add_node my-pbspro -t execute -c 10
Mise à l’échelle automatique des ressources basée sur PBS
CycleCloud gère deux ressources pour développer la fonctionnalité d’approvisionnement dynamique. Ces ressources sont nodearray et machinetype.
Lorsque vous envoyez un travail et spécifiez une ressource de tableau de nœuds avec qsub -l nodearray=highmem -- /bin/hostname, CycleCloud ajoute des nœuds au tableau de nœuds nommé highmem. Si le tableau de nœuds n’existe pas, le travail stagne.
Lorsque vous spécifiez une ressource de type machine dans une soumission de travaux, par exemple qsub -l machinetype:Standard_L32s_v2 my-job.sh, CycleCloud effectue l'auto-scaling des Standard_L32s_v2 machines dans l'ensemble de nœuds execute (par défaut). Si ce type d’ordinateur n’est pas disponible dans le réseau de nœuds execute, le travail reste en attente.
Vous pouvez utiliser ces ressources ensemble comme suit :
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
La mise à l'échelle automatique ne fonctionne que si vous spécifiez les machines Standard_HB60rs dans le tableau de nœuds hpc.
Ajout de files d'attente supplémentaires affectées aux arrays de nœuds
Sur les clusters avec plusieurs tableaux de nœuds, créez des files d’attente distinctes pour router automatiquement les travaux vers le type de machine virtuelle approprié. Dans cet exemple, supposons que le tableau de nœuds suivant gpu est défini dans votre modèle de cluster :
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
Après avoir importé le modèle de cluster et démarré le cluster, exécutez les commandes suivantes sur le nœud serveur pour créer la gpu file d’attente :
/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"
Remarque
Comme illustré dans l’exemple, la définition de file d’attente regroupe toutes les machines virtuelles de la file dans un ensemble d'échelle de machines virtuelles unique pour prendre en charge les travaux MPI. Pour définir la file d’attente pour les travaux en série et autoriser plusieurs ensembles d'échelles de machines virtuelles, définissez ungrouped = true pour resources_default et default_chunk. Définir resources_default.place = pack si vous souhaitez que le planificateur regroupe des tâches sur des machines virtuelles au lieu d'effectuer une allocation en ronde des tâches. Pour plus d'informations sur l’ordonnancement des tâches PBS, consultez la Documentation OSS de PBS Professional.
Référence de configuration PBS Professional
Le tableau suivant décrit les options de configuration spécifiques à PBS Professionnel (PBS Pro) que vous pouvez activer pour personnaliser les fonctionnalités :
| Options de PBS Pro | Descriptif |
|---|---|
| pbspro.slots | Nombre d’emplacements pour un nœud donné à signaler à PBS Pro. Le nombre d’emplacements est le nombre de travaux simultanés qu’un nœud peut exécuter. Cette valeur correspond par défaut au nombre de processeurs sur un ordinateur donné. Vous pouvez remplacer cette valeur dans les cas où vous n’exécutez pas de travaux basés sur le processeur, mais sur la mémoire, les GPU et d’autres ressources. |
| pbspro.slot_type | Nom du type d’emplacement fourni par un nœud. La valeur par défaut est « execute ». Lorsque vous étiquetez un travail avec la ressource matérielle slot_type=<type>, le travail s’exécute uniquement sur les machines avec le même type d’emplacement. Ce paramètre vous permet de créer différentes configurations logicielles et matérielles pour chaque nœud et garantit que le bon travail est toujours planifié sur le type de nœud approprié. |
| pbspro.version | Valeur par défaut : « 18.1.3-0 ». Cette version est actuellement la seule option par défaut à installer et à exécuter. À l’avenir, d’autres versions du logiciel PBS Pro peuvent être prises en charge. |
Connecter PBS avec CycleCloud
CycleCloud gère les clusters OpenPBS via un agent installable appelé azpbs. Cet agent se connecte à CycleCloud pour lire les configurations de cluster et de machine virtuelle. Il s’intègre également à OpenPBS pour traiter les informations du travail et de l’hôte. Vous pouvez trouver toutes les azpbs configurations dans le fichier, généralement situées à l’adresse autoscale.json/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",
Fichiers importants
L’agent azpbs analyse la configuration PBS chaque fois qu’il est appelé : travaux, files d’attente, ressources. L’agent fournit ces informations dans le stderr et stdout de la commande et dans un fichier journal, à des niveaux configurables. L’agent enregistre également toutes les commandes de gestion PBS (qcmd) avec des arguments dans un fichier.
Vous trouverez tous ces fichiers dans le répertoire /opt/cycle/pbspro/ où vous installez l’agent.
| Fichier | Emplacement | Descriptif |
|---|---|---|
| Autoscale Config | autoscale.json | Configuration pour la mise à l’échelle automatique, la carte des ressources, les informations d’accès CycleCloud |
| Journal de mise à l'échelle automatique | autoscale.log | Journalisation de thread principal de l’agent, y compris la gestion des hôtes CycleCloud |
| Journal de la demande | demand.log | Journal détaillé pour la correspondance des ressources |
| Journal de trace qcmd | qcmd.log | Journalisation des appels de l’agent qcmd |
| Configuration de journalisation | logging.conf | Configurations pour la journalisation des masques et des emplacements de fichiers |
Définition des ressources OpenPBS
Ce projet vous permet d’associer des ressources OpenPBS aux ressources de machine virtuelle Azure via le projet cyclecloud-pbspro (azpbs). Vous définissez cette relation de ressources dans autoscale.json.
Le modèle de cluster inclut les ressources par défaut suivantes :
{"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"
}]
}
La ressource OpenPBS nommée mem correspond à un attribut de nœud nommé node.memory, qui représente la mémoire totale de n’importe quelle machine virtuelle. Cette configuration permet azpbs de gérer une demande de ressource comme -l mem=4gb en comparant la valeur des besoins en ressources du travail aux ressources de nœud.
Actuellement, la taille du disque est définie sur size::20g. Voici un exemple de gestion de la taille de disque spécifique de la taille de machine virtuelle :
{
"select": {"node.vm_size": "Standard_F2"},
"name": "disk",
"value": "size::20g"
},
{
"select": {"node.vm_size": "Standard_H44rs"},
"name": "disk",
"value": "size::2t"
}
** Mise à l’échelle automatique et jeux de mise à l’échelle
CycleCloud traite les tâches distribuées et en série différemment dans les clusters OpenPBS. Les tâches fractionnées sont exécutées sur des nœuds qui font partie du même groupe de placement. Le groupe de placement a une plate-forme particulière (VirtualMachineScaleSet avec SinglePlacementGroup=true) et CycleCloud gère un groupe de placement nommé pour chaque ensemble de nœuds étendu. Utilisez la ressource PBS group_id pour ce nom de groupe de placement.
La hpc file d’attente ajoute l’équivalent de -l place=scatter:group=group_id en utilisant les valeurs par défaut de la file d’attente native.
Installation de l’agent CycleCloud OpenPBS azpbs
Le cluster OpenPBS CycleCloud gère l’installation et la configuration de l’agent sur le nœud serveur. Les étapes de préparation incluent la définition des ressources PBS, des files d’attente et des hooks. Vous pouvez également effectuer une installation scriptée en dehors 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 prend en charge un ensemble standard d'attributs d'arrêt automatique pour les planificateurs
| Caractéristique | Descriptif |
|---|---|
| cyclecloud.cluster.autoscale.stop_enabled | Active l'arrêt automatique sur ce nœud. [vrai/faux] |
| cyclecloud.cluster.autoscale.idle_time_after_jobs | Temps (en secondes) pendant lequel un nœud reste inactif après avoir terminé ses tâches avant son arrêt automatique. |
| cyclecloud.cluster.autoscale.idle_time_before_jobs | Durée (en secondes) pendant laquelle un nœud reste inactif avant qu'il ne s'arrête automatiquement après avoir terminé les travaux. |
Remarque
CycleCloud ne prend pas en charge la configuration de bursting avec Open PBS.
Remarque
Même si Windows est une plateforme Open PBS officiellement prise en charge, CycleCloud ne prend pas en charge l’exécution d’Open PBS sur Windows pour l’instant.