次の方法で共有


HTCondor

クラスター定義の構成セクションでを変更することで、CycleCloud クラスターで run_list を有効にすることができます。 HTCondor クラスターには、次の 3 つの基本的なコンポーネントがあります。 1 つ目は中央 マネージャーで、スケジュールデーモンと管理デーモンを提供します。 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 でこの定義を使用してクラスターをインポートして起動すると、 マネージャースケジューラ ノードと 1 つの 実行 ノードが取得されます。 コマンドを使用して、クラスターにcyclecloud add_nodeノードを追加できます。 さらに 10 個の 実行 ノードを追加するには、次のコマンドを使用します。

cyclecloud add_node htcondor -t execute -c 10

HTCondor の自動スケーリング

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

[cluster htcondor]
Autoscale = True

HTCondor の高度な使用

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

Nodearray の自動スケーリング

既定では、HTCondor は execute と呼ばれる nodearray からコアを要求します。 ジョブに別の nodearray が必要な場合 (たとえば、ワークフロー内の特定のジョブのメモリ要件が高い場合)、ジョブの slot_type 属性を指定します。 たとえば、+slot_type = "highmemory"を追加すると、HTCondor はhighmemoryではなく、execute nodearray からノードを要求します (現在、この設定では、nodearray の htcondor.slot_type = "highmemory" セクションで[[[configuration]]]を設定する必要があります)。 この設定は HTCondor がジョブをスケジュールする方法には影響しないため、ジョブのslot_typeまたはrequirements式にrank開始属性を含めることができます。 (例: 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 固有の構成オプション 説明
htcondor.agent_enabled true の場合、ジョブの送信とポーリングにcondor_agent を使用します。 既定値: false
htcondor.agent_version 使用する condor_agent のバージョン。 既定値: 1.27
htcondor.classad_lifetime classads の既定の有効期間 (秒単位)。 既定値: 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 で 1 サイクルごとに開始されるジョブの数。 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 の場合、ネゴシエーターはジョブと一致したときに startd に通知します。 既定値: 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 を定義します。 既定値: execute
htcondor.update_interval startd でコレクターへの更新を発行する間隔 (秒単位)。 既定値: 240
htcondor.use_cache_config true の場合、cache_config を使用して、インスタンスが構成のために CycleServer をポーリングするようにします。 既定値: false
htcondor.version インストールする HTCondor のバージョン。 既定値: 8.2.6

HTCondor の自動生成構成ファイル

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

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

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

CycleCloud では、スケジューラ全体でオートストップ属性の標準セットがサポートされています。

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