CPU 使用率の指標

このページでは、Cloud Spanner が提供する CPU 使用率の指標について説明します。これらの指標は、Google Cloud ConsoleCloud Monitoring コンソールで確認できます。

CPU 使用率とタスク優先度

Cloud Spanner はタスクのソースと優先度に基づいて CPU 使用率を測定します。

  • ソース: タスクは、ユーザーまたはシステムのいずれかが開始できます。

  • 優先度: 優先度は、Cloud Spanner が最初に実行するタスクを決めるのに役立ちます。システムタスクの優先度はあらかじめ決定されているため、構成できません。ユーザータスクは、特に指定されていない限り、高い優先度で実行されます。読み取りexecuteSql などの多くのデータ リクエストでは、優先度が低いリクエストを指定できます。これは、パフォーマンス SLO が低いバッチ、メンテナンス、分析クエリを実行するときなどに役立ちます。

    優先度の高いタスクは通常、優先度の低いタスクよりも先に実行されます。Cloud Spanner では、競合する優先度の低いタスクがあっても、優先度の高いタスクに使用可能な CPU リソースを最大で 100% 使用します。優先度の低いシステムタスクは、短時間遅延する可能性がありますが、最終的には実行する必要があります。したがって、すべてのタスクを処理するには、十分なノードでインスタンスをプロビジョニングする必要があります。

    優先度の高いタスクが存在しない場合、Cloud Spanner では、優先度の低いタスクをより速く完了させるために最大で 100% の利用可能な CPU リソースを活用できるようになります。バックグラウンドでの使用率の急上昇は、問題の兆候ではありません。優先度の低いタスクは、ユーザータスクなどの優先度の高いタスクがあれば、ほぼ瞬時にリソースを譲ることができます。

次の表に、各タスクの例を記載します。

ユーザータスク システムタスク
優先度: 高

読み取りexecuteSql など、優先度指定なし、または PRIORITY_HIGH と指定されているデータ リクエストが含まれます。

該当するもの: データ分割

優先度: 中

該当するもの:

  • PRIORITY_MEDIUM と指定されているデータ リクエスト
  • データフロー ジョブ(Import / Exportを含む)から発行された読み取りと書き込みが含まれます。
  • 該当するもの:

  • データベースの圧縮
  • スキーマ変更の検証
  • データベースの復元の最適化フェーズ
  • 優先度: 低

    PRIORITY_LOW と指定されたデータ リクエストが含まれます。

    該当するもの:

  • バックアップの作成
  • インデックスのバックフィル
  • 利用可能な指標

    Cloud Spanner には、CPU 使用率の指標として次のものが用意されています。

    • Smoothed CPU utilization: データベースごとに、合計 CPU 使用率の稼働平均をインスタンスの CPU リソースの割合(%)で表したものです。各データポイントは過去 24 時間の平均を表します。 この指標を使用して、アラートを作成し、24 時間などの長時間にわたって CPU 使用率を分析します。この指標のグラフは、Cloud ConsoleまたはCloud Monitoring コンソール24 時間の稼働平均で確認できます。

    • CPU 使用率(優先度別): CPU 使用率をインスタンスの CPU リソースの割合(%)で表したものです。優先度、ユーザー開始タスク、システム開始タスク別にグループ化されています。この指標を使用して、アラートを作成し、CPU 使用率を大まかに分析します。この指標のグラフは、Cloud Console または Cloud Monitoring コンソールで確認できます。

    • CPU 使用率(オペレーション タイプ別): CPU 使用率をインスタンスの CPU リソースの割合(%)で表したものです。ユーザーが開始したオペレーション(読み取り、書き込み、commit など)ごとにグループ化されます。この指標を使用して、CPU 使用率の明細を取得し、トラブルシューティングを行います。詳細については、CPU 使用率が高い場合の調査をご覧ください。Cloud Monitoring コンソールで、この指標のグラフを作成できます。

      以下で説明するように、Cloud Monitoring コンソールを使用して CPU 使用率に関するアラートを作成することもできます。

    次の表に、シングルリージョン インスタンスとマルチリージョン インスタンスの両方について、推奨される最大 CPU 使用率を示します。これらの数値を使用すると、ゾーン全体(シングルリージョン インスタンスの場合)またはリージョン全体(マルチリージョン インスタンスの場合)が消失したとしても、インスタンスでトラフィックの処理を続行できるだけの十分なコンピューティング能力が保証されます。

    指標 シングルリージョン インスタンスの場合の最大値 マルチリージョン インスタンスの場合のリージョンあたりの最大値
    高い優先度の合計 65% 45%
    24 時間の平滑化された集計 90% 90%

    推奨される最大値以下で維持するために、高い優先度 CPU 使用率と 24 時間の平均 CPU 使用率を追跡するアラートを Cloud Monitoring で作成します。

    CPU 使用率は、リクエストのレイテンシに影響する可能性があります。個々のバックエンド サーバーが過負荷状態になると、リクエストのレイテンシが大きくなります。アプリケーションでベンチマークとアクティブなモニタリングを実行することによって、Cloud Spanner がパフォーマンス要件を満たしていることを確認する必要があります。

    したがって、パフォーマンスの影響が大きいアプリケーションでは、次のセクションで説明する手法を使用して CPU 使用率をさらに低下させる必要がある場合があります。

    CPU 使用率の低下

    このセクションでは、インスタンスの CPU 使用率を低下させる方法について説明します。

    通常は、まずインスタンスにノードを追加することをおすすめします。ノードを追加した後、CPU 使用率が高くなる根本原因を調べて対処できます。

    ノードの追加

    推奨される CPU 使用率の最大値を超える場合は、インスタンスにノードを追加して、インスタンスが引き続き効率よく動作するようにすることを強くおすすめします。このプロセスを自動化する場合は、UpdateInstance メソッドを使用することによって、CPU 使用率をモニタリングして、必要に応じてノードを追加または削除するアプリケーションを作成できます。

    必要なノード数を判断するには、優先度の高い CPU 使用率のピークと 24 時間の平滑化された平均の両方を考慮します。CPU 使用率が推奨最大値を常に下回るように、十分な数のノードを割り当ててください。上記のとおり、パフォーマンスの影響が大きいアプリケーションでは、(ワークロードの急激な増加に対応するなどの目的で)ノードを余分に割り当てる必要がある場合があります。

    ノード数が十分でない場合は、Cloud Spanner によって優先度順にタスクが延期されます。データベースの圧縮やスキーマ変更の検証などの優先度の低いシステムタスクは、ユーザータスクのために延期される可能性があります。しかし、これらのタスクもインスタンスの健全性に不可欠であるため、Cloud Spanner によって無期限に延期されることはありません。コンピューティング リソース不足のために、特定の時間枠内(数時間から 1 日程度)に優先度の低いシステムタスクを完了できない場合は、Cloud Spanner によりそれらのシステムタスクの優先度が上げられる場合があります。その場合、ユーザータスクのパフォーマンスに影響が生じます

    イントロスペクション ツールを使用したより詳細な調査

    オペレーション タイプ別の CPU 使用率指標により、特定のタイプのオペレーションで高 CPU 使用率が示されている場合は、Cloud Spanner イントロスペクション ツールを使用してさらにトラブルシューティングを行います。詳細については、高 CPU 使用率の調査をご覧ください。

    次のステップ