CycleCloud のスケジュールおよび自動スケーリングの概念

CycleCloud はスケジューラではなく、ユーザーが独自のスケジューラを Azure にデプロイして、ジョブを管理してノードのクラスターに分散できるようにするプラットフォームです。 さらに、CycleCloud には、スケジューラ用の自動スケーリング アダプターを開発するための REST API と Python ライブラリが用意されており、これらのマネージド クラスターはジョブ キューとガバナンス ポリシーの長さに応じてサイズを増減できます。

オーケストレーション図

スケジューラ

スケジューラーは、ジョブ (またはタスク) のリストを受け入れ、ジョブのリソース要件とジョブ間の依存関係と優先順位を考慮して、これらのタスクを使用可能なリソースのプールに分散するソフトウェアです。 これらのジョブの一覧は、一般にキューと呼ばれます。

CycleCloud には、一般的に使用されるスケジューラ (PBS Professional OSS、Slurm、IBM LSF、グリッド エンジン、HT Condor) が組み込まれており、これらのスケジューラを Azure にデプロイするためのテンプレートが提供されています。 これらのテンプレートは既定のトポロジであり、 待ち時間の短い InfiniBand ネットワークなどの固有の特殊な機能を活用する、Azure で HPC クラスターを構築するためのベスト プラクティスを表します。

さらに、 プロジェクト はスケジューラごとに作成され、ヘッドノードとコンピューティング ノードにスケジューラ デーモンをインストールして初期化するために使用されます。

スケジューラ アダプター

スケジューラの種類ごとに作成されたアダプターは、2 つの主要な役割を果たします。1) スケジューラ キューからのリソース要件の集計、2) リソース要件を Azure VM サイズのセットの割り当て要求に変換します。 これらの割り当て要求は、VM クォータ、クラスターのサイズに対する制限、InfiniBand ネットワーク トポロジによって課される制限 (適切な VM サイズの場合) など、特定の制約を念頭に置いて構築されます。 特定の側面では、これらのアダプターは、複数の関係者からの需要と供給をネゴシエートするブローカーに似ています。

Monitor

モニターは、CycleCloud アプリケーション サーバーで実行され、Azure サブスクリプション内のリソースの可用性について Azure サービスを定期的にポーリングするプロセスです。 このモニターは、これらの情報を要求ブローカー用のスケジューラ アダプターに提供します。

ノード アロケーター

ノード アロケーターは CycleCloud アプリケーション サーバーで実行されます。 REST API を介してスケジューラ アダプターから割り当て要求を受け取り、要求を満たすために必要な Azure リソースをプロビジョニングし、プロビジョニングされたリソースをノードのセットとしてスケジューラ アダプターに返します。

注意

上記の基になる概念はスケジューラ間で一般的ですが、実装の詳細はスケジューラ間で異なります。 各実装の詳細については、個々のスケジューラ ページを参照してください。