クラスター定義の構成セクションでを変更することで、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.ジョブ前待機時間 | ノードがスケールダウンされるまで、ジョブを完了する前にアイドル状態である時間(秒単位)。 |