プリエンプティブル VM インスタンス

このページでは、プリエンプティブル仮想マシン(VM)インスタンスについて説明します。プリエンプティブル インスタンスを作成する方法の詳細は、プリエンプティブル インスタンスの作成をご覧ください。インスタンス全般の詳細は、仮想マシン インスタンスのドキュメントをご覧ください。

プリエンプティブル インスタンスとは

プリエンプティブル VM は、通常のインスタンスよりはるかに低価格で作成、実行できるインスタンスです。ただし、他のタスクがリソースへのアクセスを必要とする場合、Compute Engine がこのインスタンスを停止(プリエンプト)する可能性があります。プリエンプティブル インスタンスは Compute Engine の余剰のキャパシティを利用する機能であり、使用できるかどうかは利用状況に応じて異なります。

アプリがフォールト トレラントであり、インスタンスで生じる可能性のあるプリエンプションに対応できる場合、プリエンプティブル インスタンスで Compute Engine のコストを大幅に削減できます。たとえば、バッチ処理ジョブは、プリエンプティブル インスタンス上で実行できます。これらのインスタンスのいくつかが処理中に停止する場合、ジョブは遅くなりますが、完全に停止することはありません。プリエンプティブル インスタンスは、既存のインスタンスの負荷を増やさずにバッチ処理タスクを完了し、通常インスタンスの追加に対する正規価格を支払う必要もありません。

プリエンプティブル インスタンスの制限

プリエンプティブル インスタンスは、通常のインスタンスのように機能しますが、以下の制限があります。

  • Compute Engine は、システム イベントにより、いつでもプリエンプティブル インスタンスを停止する可能性があります。Compute Engine がシステム イベントによってプリエンプティブル インスタンスを停止する可能性は通常は低いですが、そのときの状況に応じて、日々ゾーンごとに異なることがあります。
  • Compute Engine は、24 時間実行した後で、必ずプリエンプティブル インスタンスを停止します。この 24 時間カウンタは、特定のアクションによってリセットされます。
  • プリエンプティブル インスタンスは有限の Compute Engine リソースなので、常に利用できるわけではありません。
  • プリエンプティブル インスタンスは、通常の VM インスタンスにライブ マイグレーションできません。また、メンテナンス イベントの際に自動的に再起動するように設定することもできません。
  • 上記の制約により、プリエンプティブル インスタンスはサービスレベル契約の対象となりません(さらに、明確にするために、Compute Engine SLA から除外されています)。
  • Compute Engine の Google Cloud の無料枠は、プリエンプティブル インスタンスに適用されません。

プリエンプションの処理

Compute Engine は、次の手順を実行して、インスタンスをプリエンプトします。

  1. Compute Engine は、プリエンプト通知を ACPI G2 ソフトオフ信号の形式でインスタンスに送信します。シャットダウン スクリプトを使用して、プリエンプト通知を処理し、インスタンスが停止する前にクリーンアップ操作を完了できます。
  2. インスタンスが 30 秒後に停止しない場合、Compute Engine は ACPI G3 メカニカルオフ信号をオペレーティング システムに送信します。
  3. Compute Engine は、インスタンスを TERMINATED 状態に移行させます。

インスタンスを停止することで、インスタンスのプリエンプトをシミュレートできます。

プリエンプトされたインスタンスは、引き続きプロジェクトに表示されますが、TERMINATED 状態である間は、インスタンス時間は請求されません。インスタンスに接続されている永続ディスクのデータにはアクセスして復元できますが、これらのディスクは削除するまでストレージの請求が発生します。通常のインスタンスの場合と同様、自動削除のマークが付いた永続ディスクは、プリエンプティブル インスタンスを削除するときに削除されます。

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

プリエンプトの選択

通常、Compute Engine はインスタンスのプリエンプトを回避します。Compute Engine は、インスタンスをプリエンプトするかどうかを決定する際に CPU 使用率やその他の動作を使用しません。ただし、大規模なインスタンスは占有するスペースの容量が増大することからプリエンプトされる可能性が高くなります。プリエンプション率を低減するためのおすすめの方法については、ベスト プラクティスをご覧ください。Compute Engine は、実行開始から 1 分以内にプリエンプトされたインスタンスに対しては課金しません。

参考のため、過去のデータを 7 日間の平均で見た場合、プロジェクトあたりの 1 日の平均プリエンプト率は 5~15% となっています。時刻やゾーンによっては高く跳ね上がることがあります。これは単なる観測結果です。プリエンプティブル インスタンスには、プリエンプト率またはプリエンプトの配分について何の保証も SLA もありません。

プリエンプティブル インスタンスの 24 時間カウンタは、特定のアクションによってリセットされます。具体的には、インスタンスを停止して開始すると、インスタンスが TERMINATED 状態に移行するため、Compute Engine がカウンタをリセットします。ただし、インスタンスのリセットや、VM からの sudo reboot の実行など、インスタンスが RUNNING 状態で保持される他のアクションでは、カウンタはリセットされません。

マネージド インスタンス グループのプリエンプティブル インスタンス

マネージド インスタンス グループ内にプリエンプティブル インスタンスを作成できます。グループを作成または更新する前に、インスタンスのテンプレートでプリエンプティブル オプションを指定します。

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

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

プリエンプティブル インスタンスのプレミアム オペレーティング システム

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

プレミアム オペレーティング システムを実行するプリエンプティブル インスタンスのマシンタイプに対しては、マシンタイプ別の料金体系ページに記載されている価格に従い、常に秒単位で請求されます。

プリエンプティブル VM インスタンスの割り当て

プリエンプティブル インスタンス、プリエンプティブル GPU、プリエンプティブル ローカル SSD(GB)を使用する場合は、それらのリソースの割り当てをリクエストしてください。プリエンプティブル リソースを自発的に使用し、プリエンプティブル割り当てをまだリクエストしていない場合、プリエンプティブル リソースは標準の割り当てを使用します。

プリエンプティブル インスタンス上のローカル SSD

ローカル SSD を備えたプリエンプティブル VM インスタンスを起動できます。その場合、Compute Engine により、ローカル SSD の使用に対してプリエンプティブル料金が課金されます。プリエンプティブル インスタンスにアタッチされたローカル SSD は、通常のローカル SSD と同様に動作し、同じデータ永続性特性を持ち、インスタンスが存続する間接続されます。

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

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

プリエンプティブル インスタンスの GPU

より低価格なプリエンプティブル料金で GPU をプリエンプティブル VM インスタンスに追加できます。プリエンプティブル インスタンスに接続された GPU は、通常の GPU と同様に動作しますが、インスタンスの存続期間中にのみ有効になります。GPU を使用したプリエンプティブル インスタンスは、すべてのプリエンプティブル インスタンスと同じプリエンプション処理に従います。

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

インスタンスがプリエンプトされる前に警告を受けるようにする場合、またはメンテナンス イベントの終了後にインスタンスが自動的に再起動するように構成する場合は、GPU を使用したプリエンプティブル以外のインスタンスを使用します。GPU を使用したプリエンプティブル以外のインスタンスの場合は、Google からプリエンプションの 1 時間前に通知が送信されます。

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

非プリエンプティブル インスタンスを自動的に再起動する手順については、インスタンスのオプションの更新をご覧ください。

GPU を接続したプリエンプティブル インスタンスの作成方法については、GPU を接続した VM の作成をご覧ください。

プリエンプション設定のテスト

インスタンスでシミュレート メンテナンス イベントを実行して、強制的にインスタンスをプリエンプトできます。この機能を使用して、アプリによるプリエンプティブル インスタンスの処理方法をテストします。インスタンスでメンテナンス イベントをテストする方法については、可用性ポリシーのテストをご覧ください。

インスタンスを停止して、インスタンスのプリエンプションをシミュレートすることもできます。メンテナンス イベントをシミュレートする代わりに、この操作を行うことで、割り当ての上限に達するのを回避できます。

次のステップ

使ってみる

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

Compute Engine の無料トライアル