Partager via


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_typerequirements 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.