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 つのリソースを維持します。 これらのリソースは nodearraymachinetype です

ジョブを送信し、nodearray リソースを指定すると qsub -l nodearray=highmem -- /bin/hostname 、CycleCloud は "highmem" という名前の nodearray にノードを追加します。 そのような nodearray がない場合、ジョブはアイドル状態のままになります。

同様に、ジョブの申請を指定する machinetype リソースが指定されている場合 (例: qsub -l machinetype:Standard_L32s_v2 my-job.shCycleCloud は、'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 の実行はサポートされていません。