スポットインスタンスの操作 - AWS ParallelCluster

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

スポットインスタンスの操作

AWS ParallelCluster は、クラスター設定で cluster_type = spot が設定されている場合、スポットインスタンスを使用します。スポットインスタンスはオンデマンドインスタンスよりも費用対効果が高いが、中断される可能性があります。中断の効果は、使用する特定のスケジューラによって異なります。これは、Amazon がスポットインスタンスを停止または終了する前に 2 分間の警告を提供するスポットインスタンスの中断通知 を利用するのに役立ちます。 EC2詳細については、「Amazon EC2ユーザーガイド」の「スポットインスタンスの中断」を参照してください。以下のセクションでは、スポットインスタンスを中断できる 3 つのシナリオについて説明します。

注記

スポットインスタンスを使用するには、お客様のアカウントに AWSServiceRoleForEC2Spot サービスにリンクしたロールが必要です。を使用してアカウントにこのロールを作成するには AWS CLI、次のコマンドを実行します。

aws iam create-service-linked-role --aws-service-name spot.amazonaws.com

詳細については、「Amazon ユーザーガイド」の「スポットインスタンスリクエストのサービスにリンクされたロール」を参照してください。 EC2

シナリオ 1: 実行中のジョブがないスポットインスタンスが中断される

この中断が発生すると、スケジューラキューに追加のインスタンスを必要とする保留中のジョブがある場合、またはアクティブなインスタンスの数が initial_queue_size 設定よりも少ない場合、 はインスタンスを置き換え AWS ParallelCluster ようとします。 AWS ParallelCluster が新しいインスタンスをプロビジョニングできない場合、新しいインスタンスのリクエストは定期的に繰り返されます。

シナリオ 2: 単一ノードジョブを実行しているスポットインスタンスが中断される

この中断の動作は、使用されているスケジューラによって異なります。

Slurm

ステートコード NODE_FAIL で失敗し、ジョブは再キューされます (ジョブ投入時に --no-requeue が指定されていない場合)。静的ノードの場合は、置換されます。動的ノードの場合は、ノードは終了してリセットされます。--no-requeue パラメータを含む の詳細についてはsbatch、「」を参照してください。 sbatch 「Slurm ドキュメント」の「」を参照してください。

注記

この動作は AWS ParallelCluster バージョン 2.9.0 で変更されました。以前のバージョンでは、ステートコード NODE_FAIL でジョブが終了し、そのノードがスケジューラのキューから削除されました。

SGE
注記

これは、 AWS ParallelCluster バージョン 2.11.4 までのバージョンにのみ適用されます。バージョン 2.11.5 以降、 AWS ParallelCluster は の使用をサポートしていません。SGE または Torque スケジューラ。

ジョブが終了します。ジョブが再実行フラグを有効にしている場合 (qsub -r yes または qalter -r yes を使用)、またはキューで rerun 設定が TRUE に設定されている場合、ジョブは再スケジュールされます。コンピューティングインスタンスがスケジューラキューから削除されます。この動作は、以下のSGE設定パラメータから発生します。

  • reschedule_unknown 00:00:30

  • ENABLE_FORCED_QDEL_IF_UNKNOWN

  • ENABLE_RESCHEDULE_KILL=1

Torque
注記

これは、 AWS ParallelCluster バージョン 2.11.4 までのバージョンにのみ適用されます。バージョン 2.11.5 以降、 AWS ParallelCluster は の使用をサポートしていません。SGE または Torque スケジューラ。

ジョブがシステムから削除され、ノードがスケジューラから削除されます。ジョブは再実行されません。中断時にインスタンス上で複数のジョブが実行されている場合、ノードの削除中にトルクがタイムアウトすることがあります。sqswatcher ログファイルにエラーが表示されることがあります。これはスケーリングロジックには影響せず、その後の再試行によって適切なクリーンアップが実行されます。

シナリオ 3: マルチノードジョブを実行しているスポットインスタンスが中断される

この中断の動作は、使用されているスケジューラによって異なります。

Slurm

ステートコード NODE_FAIL で失敗し、ジョブは再キューされます (ジョブ投入時に --no-requeue が指定されていない場合)。静的ノードの場合は、置換されます。動的ノードの場合は、ノードは終了してリセットされます。終了したジョブを実行していた他のノードは、他の保留中のジョブに割り当てられたり、設定された scaledown_idletime 時間が経過した後にスケールダウンされたりする場合があります。

注記

この動作は AWS ParallelCluster バージョン 2.9.0 で変更されました。以前のバージョンでは、ステートコード NODE_FAIL でジョブが終了し、そのノードがスケジューラのキューから削除されました。終了したジョブを実行していた他のノードは、設定された scaledown_idletime 時間が経過した後に縮小される可能性があります。

SGE
注記

これは、 AWS ParallelCluster バージョン 2.11.4 までのバージョンにのみ適用されます。バージョン 2.11.5 以降、 AWS ParallelCluster は の使用をサポートしていません。SGE または Torque スケジューラ。

ジョブは終了せず、残りのノードで引き続き実行されます。コンピューティングノードはスケジューラキューから削除されますが、ホストリストには孤立した使用できないノードとして表示されます。

この場合、ユーザーはジョブを削除する必要があります (qdel <jobid>)。ノードは引き続きホストリスト (qhost) に表示されますが、 AWS ParallelClusterに影響はありません。リストからホストを削除するには、インスタンスを置き換えた後に次のコマンドを実行します。

sudo -- bash -c 'source /etc/profile.d/sge.sh; qconf -dattr hostgroup hostlist <hostname> @allhosts; qconf -de <hostname>'
Torque
注記

これは、 AWS ParallelCluster バージョン 2.11.4 までのバージョンにのみ適用されます。バージョン 2.11.5 以降、 AWS ParallelCluster は の使用をサポートしていません。SGE または Torque スケジューラ。

ジョブがシステムから削除され、ノードがスケジューラから削除されます。ジョブは再実行されません。中断時にインスタンス上で複数のジョブが実行されている場合、ノードの削除中にトルクがタイムアウトすることがあります。sqswatcher ログファイルにエラーが表示されることがあります。これはスケーリングロジックには影響せず、その後の再試行によって適切なクリーンアップが実行されます。

スポットインスタンスの詳細については、「Amazon EC2ユーザーガイド」の「スポットインスタンス」を参照してください。