HTCondor
HTCondor peut facilement être activé sur un cluster CycleCloud en modifiant le « run_list » dans la section de configuration de votre définition de cluster. Il existe trois composants de base d’un cluster HTCondor. Le premier est le « gestionnaire central » qui fournit les démons de planification et de gestion. Le deuxième composant d’un cluster HTCondor est un ou plusieurs planificateurs à partir desquels les travaux sont envoyés dans le système. Le composant final est un ou plusieurs nœuds d’exécution qui sont les hôtes qui effectuent le calcul. Un modèle HTCondor simple peut ressembler à ceci :
[cluster htcondor]
[[node manager]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[central_manager]
[[node scheduler]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[condor_scheduler_role],role[filer_role],role[scheduler]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A1 # 1 core
Count = 1
[[[configuration]]]
run_list = role[usc_execute]
L’importation et le démarrage d’un cluster avec une définition dans CycleCloud génère un nœud « manager » et un nœud « scheduler », ainsi qu’un nœud « execute ». Les nœuds d’exécution peuvent être ajoutés au cluster via la cyclecloud add_node
commande. Pour ajouter 10 nœuds d’exécution supplémentaires :
cyclecloud add_node htcondor -t execute -c 10
Mise à l’échelle automatique HTCondor
CycleCloud prend en charge la mise à l’échelle automatique pour HTCondor, ce qui signifie que le logiciel surveille l’état de votre file d’attente et active et désactive les nœuds selon les besoins pour terminer le travail dans un délai/coût optimal. Vous pouvez activer la mise à l’échelle automatique pour HTCondor en ajoutant Autoscale=true
à votre définition de cluster :
[cluster htcondor]
Autoscale = True
Utilisation avancée de HTCondor
Si vous connaissez le runtime moyen des travaux, vous pouvez définir average_runtime
(en minutes) dans votre travail. CycleCloud l’utilisera pour démarrer le nombre minimal de nœuds (par exemple, cinq travaux de 10 minutes ne démarrent qu’un seul nœud au lieu de cinq lorsqu’ils average_runtime
sont définis sur 10).
Mise à l’échelle automatique du Nœud
Par défaut, HTCondor demande des cœurs à partir du nodearray appelé « execute ». Si un travail nécessite un nœud différent (par exemple, si certains travaux au sein d’un flux de travail ont une mémoire élevée), vous pouvez spécifier un slot_type
attribut pour le travail. Par exemple, l’ajout +slot_type = "highmemory"
entraîne la demande de HTCondor à un nœud à partir du nœud « highmemory » au lieu de « execute » (notez que cela doit htcondor.slot_type = "highmemory"
être défini dans la section nodearray [[[configuration]]]
). Cela n’affecte pas la façon dont HTCondor planifie les travaux. Vous pouvez donc inclure l’attribut slot_type
requirements
démarré dans les expressions ou rank
les travaux. Par exemple : Requirements = target.slot_type = "highmemory"
.
Envoi de travaux à HTCondor
La méthode la plus générique pour envoyer des travaux à un planificateur HTCondor est la commande (exécutée à partir d’un nœud planificateur) :
condor_submit my_job.submit
Un exemple de fichier d’envoi peut ressembler à ceci :
Universe = vanilla
Executable = do_science
Arguments = -v --win-prize=true
Output = log/$(Cluster).$(Process).out
Error = log/$(Cluster).$(Process).err
Should_transfer_files = if_needed
When_to_transfer_output = On_exit
+average_runtime = 10
+slot_type = "highmemory"
Queue
Référence de configuration HTCondor
Voici les options de configuration spécifiques à HTCondor que vous pouvez définir pour personnaliser les fonctionnalités :
Options de configuration HTCondor-Specific | Description |
---|---|
htcondor.agent_enabled | Si la valeur est true, utilisez la condor_agent pour l’envoi et l’interrogation du travail. Par défaut : false |
htcondor.agent_version | Version du condor_agent à utiliser. Valeur par défaut : 1.27 |
htcondor.classad_lifetime | Durée de vie par défaut des classads (en secondes). Valeur par défaut : 700 |
htcondor.condor_owner | Compte Linux propriétaire des scripts scaledown HTCondor. Par défaut : racine |
htcondor.condor_group | Groupe Linux propriétaire des scripts scaledown HTCondor. Par défaut : racine |
htcondor.data_dir | Répertoire pour les journaux, les répertoires spool, les répertoires d’exécution et le fichier config local. Par défaut : /mnt/condor_data (Linux), C:\All Services\condor_local (Windows) |
htcondor.ignore_hyperthreads | (Windows uniquement) Définissez le nombre de processeurs sur la moitié des PROCESSEURs détectés comme moyen de « désactiver » l’hyperthreading. Si vous utilisez la mise à l’échelle automatique, spécifiez le nombre de cœurs non hyperthread avec le Cores paramètre de configuration dans la section [[node]] ou [[nodearray]]. Par défaut : false |
htcondor.install_dir | Répertoire sur lequel HTCondor est installé. Par défaut : /opt/condor (Linux), C:\condor (Windows) |
htcondor.job_start_count | Le nombre de travaux qu’un schedd démarre par cycle. 0 correspond à illimité. Valeur par défaut : 20 |
htcondor.job_start_delay | Nombre de secondes entre chaque intervalle de début du travail. 0 est immédiat. Valeur par défaut : 1 |
htcondor.max_history_log | Taille maximale du fichier d’historique des travaux en octets. Par défaut : 20971520 |
htcondor.max_history_rotations | Nombre maximal de fichiers d’historique des travaux à conserver. Valeur par défaut : 20 |
htcondor.negotiator_cycle_delay | Nombre minimal de secondes avant le début d’un nouveau cycle de négociateur. Valeur par défaut : 20 |
htcondor.negotiator_interval | Fréquence (en secondes) du condor_negotiator démarre un cycle de négociation. Valeur par défaut : 60 |
htcondor.negotiator_inform_startd | Si c’est vrai, le négociateur informe le début lorsqu’il est mis en correspondance avec un emploi. Valeur par défaut : true. |
htcondor.remove_stopped_nodes | Si la valeur est true, les nœuds d’exécution arrêtés sont supprimés de la vue CycleServer au lieu d’être marqués comme « down ». |
htcondor.running | Si c’est vrai, le collecteur HTCondor et les démons négociateurs s’exécutent sur le gestionnaire central. Sinon, seule la condor_master s’exécute. Valeur par défaut : true. |
htcondor.scheduler_dual | Si la valeur est true, les planificateurs exécutent deux schedds. Valeur par défaut : true. |
htcondor.single_slot | Si la valeur est true, traite la machine comme un emplacement unique (quel que soit le nombre de cœurs qu’elle possède). Par défaut : false |
htcondor.slot_type | Définit la slot_type d’un tableau de nœuds pour la mise à l’échelle automatique. Par défaut : exécuter |
htcondor.update_interval | Intervalle (en secondes) pour le démarrage de la publication d’une mise à jour sur le collecteur. Valeur par défaut : 240 |
htcondor.use_cache_config | Si la valeur est true, utilisez cache_config pour que l’instance interroge CycleServer pour la configuration. Par défaut : false |
htcondor.version | Version de HTCondor à installer. Valeur par défaut : 8.2.6 |
Fichier de configuration généré automatiquement PAR HTCondor
HTCondor a un grand nombre de paramètres de configuration, y compris les attributs définis par l’utilisateur. CycleCloud offre la possibilité de créer un fichier de configuration personnalisé à l’aide d’attributs définis dans le cluster :
Attribut | Description |
---|---|
htcondor.custom_config.enabled | Si la valeur est true, un fichier de configuration est généré à l’aide des attributs spécifiés. Par défaut : false |
htcondor.custom_config.file_name | Nom du fichier (placé dans htcondor.data_dir /config) à écrire. Valeur par défaut : ZZZ-custom_config.txt |
htcondor.custom_config.settings | Attributs à écrire dans le fichier de configuration personnalisé, par exemple htcondor.custom_config.settings.max_jobs_running = 5000 |
Notes
Attributs de configuration HTCondor contenant un . ne peut pas être spécifié à l’aide de cette méthode. Si de tels attributs sont nécessaires, ils doivent être spécifiés dans un livre de recettes ou un fichier installé avec cluster-init.
CycleCloud prend en charge un ensemble standard d’attributs autostop parmi les planificateurs :
Attribut | Description |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | L’arrêt automatique est-il activé sur ce nœud ? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Durée (en secondes) pendant laquelle un nœud doit rester inactif après avoir terminé les travaux avant qu’il ne soit réduit. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Durée (en secondes) pendant laquelle un nœud doit rester inactif avant d’effectuer des travaux avant qu’il ne soit réduit. |