Spot VM


このページでは、Compute Engine の余剰キャパシティを利用する仮想マシン(VM)インスタンスの Spot VM について説明します。Spot VM には大幅な割引がありますが、Compute Engine がそのキャパシティを任意のタイミングで再利用するために、Compute Engine が Spot VM を事前に停止または削除(プリエンプト)する可能性があります。Spot VM は、プリエンプティブル VM の最新バージョンです。

VM のプロビジョニング モデルは、割引と可用性に影響します。Compute Engine VM は、標準プロビジョニング モデル(標準 VM、デフォルト)またはスポット プロビジョニング モデル(Spot VM)のいずれかを使用できます。標準の VM とは対照的に、Spot VM ははるかに低価格で利用できますが、プリエンプションが発生する可能性があるため、可用性が低くなります。Spot VM を使用して、フォールト トレラントなワークロードのコストを削減してください。

Compute Engine VM 全般の詳細については、仮想マシン インスタンスのドキュメントをご覧ください。Spot VM の作成方法については、Spot VM の作成と使用をご覧ください。

Spot VM とは

Spot VM では、標準 VM のオンデマンド価格と比べて、大半のマシンタイプと GPU で 60~91% の割引という大幅な低価格を実現できます。また割引率は低くなりますが他の一部のリソースもより安価に使用できます。ただし、他のタスクでリソースが必要になった場合などに、Compute Engine によって任意のタイミングで Spot VM がプリエンプトされる可能性があります。このプリエンプションの発生時に、Compute Engine は各 Spot VM に指定された終了アクションに応じて Spot VM を停止または削除します(デフォルトは停止)。Spot VM は Compute Engine の余剰キャパシティを利用する機能であり、使用できるかどうかは Compute Engine の利用状況に応じて異なります。Spot VM には、特にランタイムを制限しない限り、最小ランタイムや最大ランタイムはありません。

ワークロードがフォールト トレラントで、VM のプリエンプションが発生する可能性がある場合、Spot VM を使用すると Compute Engine の費用を大幅に削減できます。たとえば、バッチ処理ジョブは Spot VM で実行できます。これらの VM のいくつかが処理中に停止する場合、ジョブは遅くなりますが、完全に停止することはありません。Spot VM は、既存の VM に余分な負荷をかけずにバッチ処理タスクを完了します。標準 VM を追加した場合の正規料金を支払う必要もありません。

Spot VM の制限

Spot VM は標準 VM のように機能しますが、以下の制限があります。

  • 任意のタイミングでリソースを再利用するために、Compute Engine によって Spot VM がプリエンプトされる可能性があります。Compute Engine は、システム イベントなど、さまざまな理由で Spot VM をプリエンプトします。Compute Engine が Spot VM をプリエンプトする可能性は通常は低いですが、そのときの状況に応じて、日ごとまたはゾーンごとに異なることがあります。
  • Spot VM は Compute Engine の有限リソースであるため、常に利用できるわけではありません。
  • Spot VM は、動作中にライブ マイグレーションで標準 VM に移行することはできません。また、ホストイベントの際に自動的に再起動するように設定することもできません。
  • このような制約が存在するため、Spot VM はサービスレベル契約の対象外であり、Compute Engine SLA から除外されています。
  • Compute Engine の Google Cloud の無料枠クレジットは Spot VM に適用されません。
  • Spot VM は、サポートされているマシンタイプでのみ使用できます。

Spot VM のプリエンプション

このセクションでは、Compute Engine が Spot VM をプリエンプトする方法と、プリエンプション用に選択される VM について説明します。

プリエンプトの処理

Compute Engine は、次の手順で Spot VM をプリエンプトします。

  1. Compute Engine は、プリエンプトの通知を ACPI G2 ソフトオフ信号の形式で VM に送信します。シャットダウン スクリプトを使用して、プリエンプト通知を処理し、VM が停止する前にクリーンアップ操作を完了します。 プリエンプション通知のシャットダウン期間は、ベスト エフォートで最大 30 秒です。
  2. プリエンプション通知のシャットダウン期間を経過しても Spot VM が停止しない場合、Compute Engine は ACPI G3 メカニカルオフ信号をオペレーティング システムに送信します。
  3. Spot VM の最終状態は、各 VM に指定された終了アクションによって異なります。
    • 終了アクションが STOP に設定されているか、指定されていない場合、Compute Engine は VM を停止し、VM を TERMINATED 状態に移行します。
    • 終了アクションが DELETE に設定されている場合、Compute Engine は VM を削除します。

VM のプリエンプションは、VM を停止するか、VM を削除することでシミュレートできます。

プリエンプトされた VM が停止した場合、この VM はプロジェクトに引き続き表示されますが、TERMINATED 状態である間は VM 時間に加算されません。VM にアタッチされている永続ディスクのデータにアクセスして復元できますが、これらのディスクは削除するまでストレージ料金が発生します。標準 VM と同様に、Spot VM を削除すると、自動削除のマークが付いた永続ディスクが削除されます。

Spot VM が作成されてから 1 分以内に Compute Engine によってプリエンプトされた場合、この VM の使用に対して課金されません。時間をかけて大量の処理を行わない限り、Spot VM に対する課金は発生しません。ただし、プレミアム オペレーティング システムの請求は、引き続き通常どおり計算されます。

プリエンプトの選択

Spot VM が RUNNING 状態になると、プリエンプションが発生する可能性があります。一方、TERMINATED 状態の場合、Spot VM はプリエンプションとみなされません。結果として、Spot VM を停止すると VM は TERMINATED 状態のままになるため、停止してから再起動することで、プリエンプション プロセスをリセットできます。プリエンプトされた Spot VM は、容量がある限り、必要に応じて何回でも停止して再起動できます。特に、VM をリセットするか、sudo reboot を実行すると、VM は RUNNING 状態のままになるため、プリエンプション プロセスはリセットされません。

プリエンプション率を減らす方法については、ベスト プラクティスをご覧ください。

料金

Spot の料金(Spot VM の料金)を使用すると、大幅な割引価格で VM を使用できます。Spot の料金では、ほとんどのマシンタイプと GPU について、標準価格と比べて 60~91% の割引が適用されます。また、A3 マシンタイプ、GPU、ローカル SSD、外部 IP アドレス、Spot VM の Tier_1 ネットワーキング費用にも、割引率は低くなりますが割引が適用されます。カスタム マシンタイプについては、標準マシンタイプの料金に加えてプレミアム料金が課金されます。カスタム マシンタイプの Spot の料金には、このプレミアム料金が含まれています。

特に、プリエンプトされた VM が停止した場合、TERMINATED 状態の VM 時間には課金されません。VM にアタッチされている永続ディスクのデータにアクセスして復元できますが、これらのディスクは削除するまでストレージ料金が発生します。詳しくは、インスタンス稼働時間ディスクの料金をご覧ください。

Spot VM の最新の料金を確認するには、Spot VM の料金ページページを参照するか、Cloud Billing Catalog API を使用するか、Spot VM の料金のお知らせにお申し込みください

Compute Engine での Spot VM の使用

このセクションでは、他の Compute Engine サービスで Spot VM を使用する際の注意事項について説明します。マネージド インスタンス グループ、プレミアム オペレーティング システム、ローカル SSD、GPU での Spot VM の使用方法について説明します。さらに、Spot VM が Compute Engine リソースの割り当てにどのように影響するかについても説明します。

マネージド インスタンス グループ内の Spot VM

マネージド インスタンス グループに Spot VM を作成するには、gcloud CLI または Compute Engine API を使用します。グループを作成または更新する前に、インスタンス テンプレートSpot VM を作成するためのオプションを指定します。

追加の Compute Engine リソースが利用可能な場合にのみ、マネージド インスタンス グループで新しい Spot VM を作成または追加できます。これらのリソースが制限されている場合、マネージド インスタンス グループ内の Spot VM のサイズを変更することはできません。また、数を自動的に増減することもできません。

マネージド インスタンス グループは、常にターゲット サイズ、またはそのグループに対して autoscaler が指定するサイズを維持しようとします。Compute Engine がマネージド インスタンス グループ内の 1 つ以上の Spot VM を停止すると、グループは指定されたインスタンス テンプレートを使用して、それらの VM の再作成を繰り返し試みます。必要なリソースが再び利用できるようになると、グループは VM を再作成して、ターゲット グループのサイズを維持します。

Spot VM 上のプレミアム オペレーティング システム

Spot VM によってプレミアム オペレーティング システムの費用が削減されることはありません。これらのオペレーティング システムの利用に対する課金方法は通常と変わりません。Compute Engine がプレミアム オペレーティング システムを実行している Spot VM を停止した場合、VM を自分自身で停止した場合と同様にオペレーティング システムの利用料金が発生します。最小使用量に対する課金が適用され、プレミアム オペレーティング システムに対する請求は、引き続き最も近い使用量の増分に切り上げて計算されます。

プレミアム オペレーティング システムを実行する Spot VM のマシンタイプに対しては、マシンタイプの料金ページに記載されている料金が適用され、常に秒単位で課金されます。

Spot VM 上のローカル SSD

ローカル SSD を使用して Spot VM を起動できます。Compute Engine でのローカル SSD の使用に対してはスポット料金が適用されます。Spot VM にアタッチされたローカル SSD は、通常のローカル SSD と同様に動作し、同じデータ永続性特性を持ち、VM の存続期間中は維持されます。

Compute Engine は、実行開始してから 1 分以内に VM がプリエンプティブルになった場合、ローカル SSD に対して課金しません。

ローカル SSD の詳細については、ローカル SSD の追加をご覧ください。

Spot VM 上の GPU

Spot VM には、低価格のスポット価格で GPU を追加できます。Spot VM に接続された GPU は、通常の GPU と同様に機能しますが、維持されるのは VM の存続期間中のみです。GPU を接続した Spot VM は、すべての Spot VM と同じプリエンプション プロセスに従います。

Spot VM の GPU に専用の Preemptible GPU 割り当てをリクエストすることを検討してください。詳細については、Spot VM の割り当てをご覧ください。

メンテナンス イベント中は、GPU を使用する Spot VM がデフォルトでプリエンプトされます。この VM を自動的に再起動することはできません。プリエンプトされた後で VM を再作成する場合には、マネージド インスタンス グループを使用します。マネージド インスタンス グループは、vCPU、メモリ、GPU リソースが利用可能であれば、VM インスタンスを再作成します。

VM のプリエンプト前に警告を受けるようにする場合、またはメンテナンス イベントの終了後に VM が自動的に再起動するように構成する場合は、GPU を搭載した標準の VM を使用します。GPU を搭載した標準 VM の場合、Compute Engine はプリエンプションの 1 時間前に通知を送信します。

VM の実行が開始してから 1 分以内に VM がプリエンプトされた場合、Compute Engine では GPU に対する課金を行いません。

GPU がアタッチされた Spot VM の作成方法については、GPU が接続された VM を作成するSpot VM の作成をご覧ください。

Spot VM の割り当て

他の VM と同様に、Spot VM には使用可能な CPU の割り当てが必要です。また、ローカル SSD または GPU で Spot VM を使用する場合、Spot VM にはディスク割り当てGPU 割り当てもそれぞれ必要になります。

これらのリソースで Spot VM を使用しているときに、プリエンプティブル割り当てをリクエストしていない場合、Spot VM はこれらのリソースの標準割り当てを使用します。Spot VM を使用する場合は、それらのリソースに対してプリエンプティブル割り当てをリクエストし、Spot VM が他の割り当てを消費しないようにすることを検討してください。

Compute Engine で、あるリージョンでプリエンプティブル割り当てが付与された後は、そのリージョン内のすべての Spot VM(任意のプリエンプティブル VM を含む)が、その割り当てに対してカウントされます。そのリージョンのすべての標準 VM は、引き続き標準割り当てにカウントされます。プリエンプティブル割り当てがないリージョンでは、標準割り当てを使用して Spot VM を起動できます。

プリエンプティブル割り当ては、Compute Engine が割り当てを付与しない限り、gcloud CLI や Google Cloud コンソールの割り当てページに表示されません。詳細については、プリエンプティブル リソースの数量に基づく割り当てをご覧ください。

次のステップ

使ってみる

Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオで Compute Engine のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。

Compute Engine の無料トライアル