Partager via


HTCondor

Vous pouvez activer HTCondor sur un cluster CycleCloud en modifiant la run_list section 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 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]

Lorsque vous importez et démarrez un cluster avec cette définition dans CycleCloud, vous obtenez un gestionnaire et un nœud planificateur et un nœud d’exécution . Vous pouvez ajouter des nœuds d’exécution au cluster à l’aide de la cyclecloud add_node commande. Pour ajouter 10 nœuds d’exécution supplémentaires, utilisez la commande suivante :

cyclecloud add_node htcondor -t execute -c 10

Mise à l’échelle automatique de HTCondor

CycleCloud prend en charge la mise à l’échelle automatique pour HTCondor. 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 et un coût optimaux. Pour activer la mise à l’échelle automatique pour HTCondor, ajoutez Autoscale=true à votre définition de cluster :

[cluster htcondor]
Autoscale = True

Utilisation avancée de HTCondor

Si vous connaissez le runtime moyen des travaux, définissez average_runtime (en minutes) dans votre travail. CycleCloud utilise cette valeur pour démarrer le nombre minimal de nœuds. Par exemple, si cinq travaux de 10 minutes sont soumis et que average_runtime est défini sur 10, CycleCloud démarre un seul nœud au lieu de cinq.

Mise à l’échelle automatique de Nodearray

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 exigence de mémoire élevée), spécifiez un slot_type attribut pour le travail. Par exemple, ajouter +slot_type = "highmemory" fait en sorte que HTCondor demande un nœud du tableau de nœuds highmemory au lieu de execute (ce paramètre nécessite actuellement que htcondor.slot_type = "highmemory" soit défini dans la section du tableau de nœuds [[[configuration]]]). Ce paramètre n’affecte pas la façon dont HTCondor planifie les tâches. Vous pouvez donc inclure l’attribut slot_type startd dans les expressions requirements ou rank des tâches. Par exemple : Requirements = target.slot_type = "highmemory".

Soumission de tâches à HTCondor

La façon la plus générique d’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

Les options de configuration spécifiques à HTCondor suivantes personnalisent les fonctionnalités :

options de configuration HTCondor-Specific Descriptif
htcondor.agent_enabled Si la valeur est true, utilisez le condor_agent pour l’envoi et le sondage des travaux. Valeur 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 Le compte Linux propriétaire des scripts de réduction HTCondor. Valeur par défaut : racine
htcondor.condor_group Le groupe Linux propriétaire des scripts de réduction HTCondor. Valeur par défaut : racine
htcondor.data_dir Répertoire des journaux, répertoires de pool, répertoires d’exécution et fichier config local. Valeur 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 pour « 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]]. Valeur 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 Nombre de travaux qu’un planificateur démarre par cycle. 0 est 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_journal_historique Taille maximale du fichier d’historique des travaux en octets. Par défaut : 20971520
htcondor.max_histoire_rotations Nombre maximal de fichiers d’historique des travaux à conserver. Valeur par défaut : 20
htcondor.negotiator_cycle_delay Le nombre minimal de secondes avant qu’un nouveau cycle de négociateur puisse commencer. Valeur par défaut : 20
htcondor.negotiator_interval À quelle fréquence (en secondes) le condor_negotiator démarre-t-il un cycle de négociation ? Valeur par défaut : 60
htcondor.negotiator_inform_startd Si vrai, le négociateur informe le startd quand il est associé à un travail. 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.course à pied S’il est vrai, le collecteur HTCondor et les démons négociateurs s’exécutent sur le responsable central. Sinon, seul le condor_master s’exécute. Valeur par défaut : true
htcondor.scheduler_dual Si la valeur est true, les programmateurs exécutent deux planificateurs. Valeur par défaut : true
htcondor.single_slot Si la valeur est vraie, traite la machine comme une unité unique (quel que soit le nombre de cœurs qu’elle possède). Valeur par défaut : false
htcondor.slot_type Définit la slot_type d’un tableau de nœuds pour la mise à l’échelle automatique. Valeur par défaut : exécuter
htcondor.update_interval Intervalle (en secondes) pour que le startd publie une mise à jour vers 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. Valeur par défaut : false
htcondor.version Version de HTCondor à installer. Valeur par défaut : 8.2.6

Fichier de configuration automatiquement généré de 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 :

Caractéristique Descriptif
htcondor.custom_config.activé Si la valeur est true, un fichier de configuration est généré à l’aide des attributs spécifiés. Valeur par défaut : false
htcondor.custom_config.nom_fichier Nom du fichier (placé dans htcondor.data_dir/config) à écrire. Par défaut : ZZZ-custom_config.txt
htcondor.custom_config.paramètres Attributs à écrire dans le fichier de configuration personnalisé, par exemple htcondor.custom_config.settings.max_jobs_running = 5000

Remarque

Vous ne pouvez pas spécifier d’attributs de configuration HTCondor contenant un . en utilisant cette méthode. Si vous avez besoin de ces attributs, spécifiez-les dans un livre de recettes ou un fichier installé avec cluster-init.

CycleCloud prend en charge un ensemble standard d'attributs d'arrêt automatique pour les planificateurs

Caractéristique Descriptif
cyclecloud.cluster.autoscale.stop_enabled La fonction d'arrêt automatique est-elle activée sur ce nœud ? [vrai/faux]
cyclecloud.cluster.autoscale.idle_time_after_jobs Durée (en secondes) pendant laquelle un nœud reste inactif après avoir terminé les tâches avant que sa capacité ne soit réduite.
cyclecloud.cluster.autoscale.temps_d'attente_avant_les_jobs Durée (en secondes) pendant laquelle un nœud reste inactif avant de terminer les tâches, avant d'être réduit en capacité.