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 | ノードがスケール ダウンされるまでのジョブを完了するまでのアイドル状態の時間 (秒単位)。 |