CPU 使用率の指標

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

CPU 使用率とタスク優先度

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

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

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

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

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

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

ユーザーのタスク システムタスク
高い優先度 読み取りexecuteSql など、優先度指定なし、または PRIORITY_HIGH と指定されているデータ リクエストが含まれます。 該当するもの: データ分割
中間の優先度 内容:
  • PRIORITY_MEDIUM と指定されているデータ リクエスト
  • データフロー ジョブ(Import / Exportを含む)から発行された読み取りと書き込みが含まれます。
内容:
低い優先度 PRIORITY_LOW と指定されたデータ リクエストが含まれます。 内容:
  • インデックスのバックフィル
  • 生成された列のバックフィル

利用可能な指標

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

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

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

  • オペレーションの種類ごとの CPU 使用率: ユーザーが開始したオペレーション(読み取り、書き込み、commit など)でグループ化した、インスタンスの CPU リソースの比率としてのCPU 使用率。高 CPU 使用率の調査の説明に従い、この指標を使用して、CPU 使用率の詳細な内訳を取得し、さらにトラブルシューティングします。この指標のグラフは Cloud Monitoring コンソールで作成できます。

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

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

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

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

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

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

CPU 使用率の 100% 超過

Spanner インスタンスの CPU 使用率が 100% を超えることがあります。これは、インスタンスで構成されている量よりも多くの CPU リソースがインスタンスで使用されていることを意味します。

CPU リソースの使用率が 100% を超えると、CPU 使用率の急増時(たとえば、リクエスト トラフィックの急激な増加時)にパフォーマンスが向上し、予測可能性が高まることがあります。

CPU 容量の使用率が 100% を超えることは保証されません。通常のデータベース オペレーションでは当てにしないでください。

Spanner インスタンスの CPU 使用率が長時間 100% に近い値になるか、100% を超えると、通常のオペレーションのパフォーマンスとレイテンシが低下するリスクがあります。CPU リソースを追加しても、一貫したパフォーマンスを安全に確保することはできません。

このような CPU 使用率の増加分については、お客様に課金されません。

CPU 使用率の低下

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

一般に、手始めにインスタンスのコンピューティング容量を増やすことをおすすめします。コンピューティング能力を増やしたら、高 CPU 使用率の根本原因を調べて対処できます。

コンピューティング容量の増加

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

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

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

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

オペレーションの種類別の CPU 使用率の指標が、特定の種類のオペレーションが高 CPU 使用率の原因となっていることを示している場合は、Spanner のイントロスペクション ツールを使用してさらにトラブルシューティングします。詳細については、高 CPU 使用率の調査をご覧ください。

次のステップ