HTCondor

クラスター定義の構成セクションで "run_list" を変更することで、CycleCloud クラスターで HTCondor を簡単に有効にすることができます。 HTCondor クラスターには、3 つの基本的なコンポーネントがあります。 1 つ目は、スケジュールと管理のデーモンを提供する "セントラル マネージャー" です。 HTCondor クラスターの 2 つ目のコンポーネントは、ジョブがシステムに送信される 1 つ以上のスケジューラです。 最後のコンポーネントは、計算を実行するホストである 1 つ以上の実行ノードです。 単純な HTCondor テンプレートは次のようになります。

[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]

CycleCloud で定義されたクラスターをインポートして開始すると、"manager" ノードと "scheduler" ノードと 1 つの "実行" ノードが生成されます。 実行ノードは、コマンドを使用してクラスターに cyclecloud add_node 追加できます。 さらに 10 個の実行ノードを追加するには、

cyclecloud add_node htcondor -t execute -c 10

HTCondor の自動スケール

CycleCloud は HTCondor の自動スケールをサポートしています。これは、ソフトウェアがキューの状態を監視し、必要に応じてノードをオンまたはオフにして、最適な時間/コストで作業を完了することを意味します。 クラスター定義に追加 Autoscale=true することで、HTCondor の自動スケールを有効にすることができます。

[cluster htcondor]
Autoscale = True

HTCondor Advanced Usage

ジョブの平均実行時間がわかっている場合は、ジョブで (分単位で) 定義 average_runtime できます。 CycleCloud は、これを使用してノードの最小数を開始します (たとえば、5 つの 10 分のジョブでは、10 に設定されている場合 average_runtime は 5 個ではなく 1 つのノードしか開始されません)。

自動スケーリング Nodearray

既定では、HTCondor は 'execute' と呼ばれる nodearray からコアを要求します。 ジョブに別の nodearray が必要な場合 (たとえば、ワークフロー内の特定のジョブのメモリ要件が高い場合)、ジョブの属性を slot_type 指定できます。 たとえば、追加+slot_type = "highmemory"すると、HTCondor は "execute" ではなく "highmemory" nodearray からノードを要求します (これは現在、nodearray の[[[configuration]]]セクションで設定する必要htcondor.slot_type = "highmemory"があることに注意してください)。 これは、HTCondor がジョブをスケジュールする方法には影響しないため、ジョブrequirementsまたはrank式に開始属性を含slot_typeめることができます。 (例: Requirements = target.slot_type = "highmemory")。

HTCondor へのジョブの送信

HTCondor スケジューラにジョブを送信する最も一般的な方法は、コマンド (スケジューラ ノードから実行) です。

condor_submit my_job.submit

サンプルの送信ファイルは次のようになります。

      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

HTCondor 構成リファレンス

機能をカスタマイズするために設定できる HTCondor 固有の構成オプションを次に示します。

HTCondor-Specific構成オプション [説明]
htcondor.agent_enabled true の場合は、ジョブの送信とポーリングにcondor_agentを使用します。 既定値: false
htcondor.agent_version 使用するcondor_agentのバージョン。 既定値: 1.27
htcondor.classad_lifetime クラスアドの既定の有効期間 (秒単位)。 既定値: 700
htcondor.condor_owner HTCondor スケールダウン スクリプトを所有する Linux アカウント。 既定値: root
htcondor.condor_group HTCondor スケールダウン スクリプトを所有する Linux グループ。 既定値: root
htcondor.data_dir ログ、スプール ディレクトリ、実行ディレクトリ、およびローカル構成ファイルのディレクトリ。 既定値: /mnt/condor_data (Linux)、C:\All Services\condor_local (Windows)
htcondor.ignore_hyperthreads (Windows のみ)ハイパースレッディングを "無効にする" 方法として、検出された CPU の半分に CPU の数を設定します。 自動スケールを使用する場合は、[[node]] または [nodearray] セクションの構成設定でハイパースレッド以外のコア数 Cores を指定します。 既定値: false
htcondor.install_dir HTCondor がインストールされているディレクトリ。 既定値: /opt/condor (Linux)、C:\condor (Windows)
htcondor.job_start_count schedd がサイクルごとに開始するジョブの数。 0 は制限なしです。 既定値: 20
htcondor.job_start_delay 各ジョブ開始間隔の間の秒数。 0 は即時です。 既定値は1
htcondor.max_history_log ジョブ履歴ファイルの最大サイズ (バイト単位)。 既定値: 20971520
htcondor.max_history_rotations 保持するジョブ履歴ファイルの最大数。 既定値: 20
htcondor.negotiator_cycle_delay 新しいネゴシエーター サイクルが開始されるまでの最小秒数。 既定値: 20
htcondor.negotiator_interval condor_negotiatorがネゴシエーション サイクルを開始する頻度 (秒単位)。 既定:60
htcondor.negotiator_inform_startd true の場合、ネゴシエーターはジョブに一致したときに開始を通知します。 既定値: true
htcondor.remove_stopped_nodes true の場合、停止した実行ノードは、"ダウン" としてマークされるのではなく、CycleServer ビューから削除されます。
htcondor.running true の場合、HTCondor コレクターおよびネゴシエーター デーモンは中央マネージャーで実行されます。 それ以外の場合は、condor_masterのみが実行されます。 既定値: true
htcondor.scheduler_dual true の場合、スケジューラは 2 つの schedd を実行します。 既定値: true
htcondor.single_slot true の場合は、マシンを 1 つのスロットとして扱います (マシンが所有するコアの数に関係なく)。 既定値: false
htcondor.slot_type 自動スケール用のノード配列のslot_typeを定義します。 既定値: 実行
htcondor.update_interval コレクターへの更新の発行を開始する間隔 (秒単位)。 既定値: 240
htcondor.use_cache_config true の場合は、cache_configを使用して、インスタンスで CycleServer を構成用にポーリングします。 既定値: false
htondor.version インストールする HTCondor のバージョン。 既定値: 8.2.6

HTCondor 自動生成構成ファイル

HTCondor には、ユーザー定義属性を含む多数の構成設定があります。 CycleCloud には、クラスターで定義されている属性を使用してカスタム構成ファイルを作成する機能が用意されています。

属性 説明
htcondor.custom_config.enabled true の場合、指定した属性を使用して構成ファイルが生成されます。 既定値: false
htcondor.custom_config.file_name 書き込むファイルの名前 (/config に配置 htcondor.data_dir)。 既定値: ZZZ-custom_config.txt
htcondor.custom_config.settings カスタム構成ファイルに書き込む属性 (例: htcondor.custom_config.settings.max_jobs_running = 5000

注意

を含む HTCondor 構成属性。 このメソッドを使用して指定することはできません。 このような属性が必要な場合は、クックブックまたは cluster-init と共にインストールされたファイルで指定する必要があります。

CycleCloud では、スケジューラ間で自動停止属性の標準セットがサポートされています。

属性 説明
cyclecloud.cluster.autoscale.stop_enabled このノードで自動停止は有効になっていますか? [true/false]
cyclecloud.cluster.autoscale.idle_time_after_jobs スケール ダウンされるまでのジョブの完了後にノードがアイドル状態になるまでの時間 (秒単位)。
cyclecloud.cluster.autoscale.idle_time_before_jobs ノードがスケール ダウンされるまでのジョブを完了するまでのアイドル状態の時間 (秒単位)。