OpenPBS
クラスター定義の構成セクションで "run_list" を変更することで、CycleCloud クラスターで OpenPBS を簡単に有効にすることができます。 PBS Professional クラスターの 2 つの基本的なコンポーネントは、PBS Professional ソフトウェアを実行する共有ファイル システムを提供する "マスター" ノードと、送信されたジョブをマウントして実行するホストである "実行" ノードです。 たとえば、単純なクラスター テンプレート スニペットは次のようになります。
[cluster my-pbspro]
[[node master]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[pbspro_master_role]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A1 # 1 core
[[[configuration]]]
run_list = role[pbspro_execute_role]
CycleCloud で定義を使用してクラスターをインポートして起動すると、単一の "マスター" ノードが生成されます。 実行ノードは、コマンドを使用してクラスターに cyclecloud add_node
追加できます。 たとえば、さらに 10 個の実行ノードを追加するには、次のようにします。
cyclecloud add_node my-pbspro -t execute -c 10
PBS リソースベースの自動スケール
Cyclecloud は、動的プロビジョニング機能を拡張するために 2 つのリソースを維持します。 これらのリソースは nodearray と machinetype です。
ジョブを送信し、nodearray リソースを指定すると qsub -l nodearray=highmem -- /bin/hostname
、CycleCloud は "highmem" という名前の nodearray にノードを追加します。 そのような nodearray がない場合、ジョブはアイドル状態のままになります。
同様に、ジョブの申請を指定する machinetype リソースが指定されている場合 (例: qsub -l machinetype:Standard_L32s_v2 my-job.sh
CycleCloud は、'execute' (既定) nodearray 内の 'Standard_L32s_v2' を自動スケールします。 そのマシンの種類が 'execute' ノード配列で使用できない場合、ジョブはアイドル状態のままです。
これらのリソースは、次のように組み合わせて使用できます。
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
これは、'Standard_HB60rs' マシンに 'hpc' ノード配列が指定されている場合にのみ自動スケーリングされます。
nodearrays に割り当てられた追加のキューの追加
複数の nodearray を持つクラスターでは、ジョブを適切な VM の種類に自動的にルーティングする個別のキューを作成するのが一般的です。 この例では、クラスター テンプレートで次の "gpu" nodearray が定義されていることを前提としています。
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
クラスター テンプレートをインポートしてクラスターを起動した後、サーバー ノードで次のコマンドを実行して、"gpu" キューを作成できます。
/opt/pbs/bin/qmgr -c "create queue gpu"
/opt/pbs/bin/qmgr -c "set queue gpu queue_type = Execution"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.place = scatter"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu enabled = true"
/opt/pbs/bin/qmgr -c "set queue gpu started = true"
注意
上記のキュー定義では、キュー内のすべての VM が 1 つの VM スケール セットにパックされ、MPI ジョブがサポートされます。 シリアル ジョブのキューを定義し、複数の VM スケールセットを許可するには、両方resources_default
に設定ungrouped = true
しますdefault_chunk
。 また、ジョブのラウンド ロビン割り当てではなく、スケジューラでジョブを VM にパックするかどうかを設定 resources_default.place = pack
することもできます。 PBS ジョブ パッキングの詳細については、 PBS Professional OSS の公式ドキュメントを参照してください。
PBS プロフェッショナル構成リファレンス
機能をカスタマイズするために切り替えることができる PBS Professional 固有の構成オプションを次に示します。
PBS Pro オプション | 説明 |
---|---|
pbspro.slots | PBS Pro に報告する特定のノードのスロット数。 スロットの数は、ノードが実行できる同時実行ジョブの数です。この値の既定値は、特定のマシン上の CPU の数です。 CPU に基づいてジョブを実行せず、メモリや GPU などでジョブを実行する場合は、この値をオーバーライドできます。 |
pbspro.slot_type | ノードが提供する "スロット" の種類の名前。 既定値は "execute" です。 ジョブがハード リソース slot_type=<type> でタグ付けされている場合、そのジョブは同じスロットタイプのマシン でのみ 実行されます。 これにより、ノードごとに異なるソフトウェア構成とハードウェア構成を作成し、適切なジョブが常に正しい種類のノードでスケジュールされるようにすることができます。 |
pbspro.version | 既定値: '18.1.3-0'。 これは、インストールして実行する PBS Professional バージョンです。 現在、これは既定のオプション であり、唯一 のオプションです。 今後、PBS Professional ソフトウェアの追加バージョンがサポートされる可能性があります。 |
CycleCloud を使用して PBS を接続する
CycleCloud は、インストール可能なエージェントを介して OpenPBS クラスターを管理します azpbs
。 このエージェントは、クラスターと VM の構成を読み取るために CycleCloud に接続し、OpenPBS と統合してジョブとホスト情報を効果的に処理します。 通常は、/opt/cycle/pbspro/autoscale.json
すべてのazpbs
構成がautoscale.json
ファイル内にあります。
"password": "260D39rWX13X",
"url": "https://cyclecloud1.contoso.com",
"username": "cyclecloud_api_user",
"logging": {
"config_file": "/opt/cycle/pbspro/logging.conf"
},
"cluster_name": "mechanical_grid",
重要なファイル
エージェントは azpbs
、呼び出されるたびに PBS 構成 (ジョブ、キュー、リソース) を解析します。
情報は、コマンドの stderr と stdout だけでなく、ログ ファイルにも提供されます。どちらも構成可能なレベルです。 引数を持つすべての PBS 管理コマンド (qcmd
) もファイルに記録されます。
これらのファイルはすべて、エージェントがインストールされている /opt/cycle/pbspro/ ディレクトリにあります。
ファイル | 場所 | 説明 |
---|---|---|
自動スケーリングの構成 | autoscale.json | 自動スケール、リソース マップ、CycleCloud アクセス情報の構成 |
自動スケール ログ | autoscale.log | CycleCloud ホスト管理を含むエージェント のメイン スレッド ログ |
需要ログ | demand.log | リソースの照合に関する詳細なログ |
qcmd トレース ログ | qcmd.log | エージェント qcmd 呼び出しのログ記録 |
ログの構成 | logging.conf | マスクとファイルの場所のログ記録の構成 |
OpenPBS リソースの定義
このプロジェクトでは、Cyclecloud-pbspro (azpbs) プロジェクトを介して、OpenPBS リソースと Azure VM リソースの一般的な関連付けを行うことができます。 で定義されている autoscale.json
このリソースリレーションシップ。
付属のクラスター テンプレートで定義されている既定のリソースは、次のとおりです。
{"default_resources": [
{
"select": {},
"name": "ncpus",
"value": "node.vcpu_count"
},
{
"select": {},
"name": "group_id",
"value": "node.placement_group"
},
{
"select": {},
"name": "host",
"value": "node.hostname"
},
{
"select": {},
"name": "mem",
"value": "node.memory"
},
{
"select": {},
"name": "vm_size",
"value": "node.vm_size"
},
{
"select": {},
"name": "disk",
"value": "size::20g"
}]
}
名前付きの mem
OpenPBS リソースは、仮想マシンの合計メモリである、という名前 node.memory
のノード属性に相当します。 この構成では、ジョブ リソース要件の値をノード リソースと比較するなどして、リソース要求-l mem=4gb
を処理できますazpbs
。
ディスクは現在ハードコーディングされていることに注意してください size::20g
。
VM サイズ固有のディスク サイズを処理する例を次に示します。
{
"select": {"node.vm_size": "Standard_F2"},
"name": "disk",
"value": "size::20g"
},
{
"select": {"node.vm_size": "Standard_H44rs"},
"name": "disk",
"value": "size::2t"
}
自動スケールとスケール セット
CycleCloud では、OpenPBS クラスターではスパン ジョブとシリアル ジョブの処理方法が異なります。
スパン ジョブは、同じ配置グループの一部であるノードに配置されます。 配置グループには特定のプラットフォームの意味があります (VirtualMachineScaleSet with SinglePlacementGroup=true) と CC は、各スパン ノード セットの名前付き配置グループを管理します。 この配置グループ名には PBS リソース group_id
を使用します。
キューは hpc
、ネイティブ キューの既定値を使用して同等の -l place=scatter:group=group_id
値を追加します。
CycleCloud OpenPBS エージェントのインストール azpbs
OpenPBS CycleCloud クラスターは、サーバー ノード上のエージェントのインストールと構成を管理します。 準備には、PBS リソース、キュー、フックの設定が含まれます。 スクリプト化されたインストールは、CycleCloud の外部でも実行できます。
# Prerequisite: python3, 3.6 or newer, must be installed and in the PATH
wget https://github.com/Azure/cyclecloud-pbspro/releases/download/2.0.5/cyclecloud-pbspro-pkg-2.0.5.tar.gz
tar xzf cyclecloud-pbspro-pkg-2.0.5.tar.gz
cd cyclecloud-pbspro
# Optional, but recommended. Adds relevant resources and enables strict placement
./initialize_pbs.sh
# Optional. Sets up workq as a colocated, MPI focused queue and creates htcq for non-MPI workloads.
./initialize_default_queues.sh
# Creates the azpbs autoscaler
./install.sh --venv /opt/cycle/pbspro/venv
# Otherwise insert your username, password, url, and cluster name here.
./generate_autoscale_json.sh --install-dir /opt/cycle/pbspro \
--username user \
--password password \
--url https://fqdn:port \
--cluster-name cluster_name
azpbs validate
CycleCloud では、スケジューラ間で自動停止属性の標準セットがサポートされています。
属性 | [説明] |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | このノードで自動停止は有効になっていますか? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | ノードがスケール ダウンされるまでのジョブの完了後にアイドル状態になるまでの時間 (秒単位)。 |
cyclecloud.cluster.autoscale.idle_time_before_jobs | ノードがスケール ダウンされるまでのジョブを完了するまでにアイドル状態になるまでの時間 (秒単位)。 |
注意
CycleCloud では、Open PBS でのバースト構成はサポートされていません。
注意
Windows は正式にサポートされている Open PBS プラットフォームですが、CycleCloud では現時点では Windows での Open PBS の実行はサポートされていません。