Cloud Profiler の概要
本番環境システムのパフォーマンスを理解することは非常に困難です。テスト環境でパフォーマンスを測定しても、本番環境システムにかかる負荷を完全に再現することはできません。アプリケーションの一部に対してマイクロベンチマークが可能かもしれませんが、本番環境システムのワークロードと動作の再現は容易ではありません。
本番環境システムを継続的にプロファイリングすることで、稼働中のサービスで CPU サイクルやメモリなどのリソースがどのように消費されているのかを効果的に調べることができます。しかし、プロファイリングを行うと本番環境システムの負荷が増大します。この方法でリソースの消費パターンを見つけるには、プロファイリングで増加する負荷を小さくする必要があります。
Cloud Profiler は、本番環境のアプリケーションから CPU 使用率やメモリ割り当てなどの情報を継続的に収集する、オーバーヘッドの少ないプロファイラです。収集した情報から情報の生成元であるソースコードが特定されるので、最もリソースを消費しているアプリケーション部分を容易に識別できます。アプリケーションの特定が難しい場合でも、パフォーマンスの特徴を把握できます。
利用可能なプロファイリングの種類
Cloud Profiler は、プログラムが記述されている言語に基づいて、さまざまなタイプのプロファイリングをサポートします。次の表に、各言語でサポートされるプロファイルの種類を示します。
プロファイルの種類 | Go | Java | Node.js | Python |
---|---|---|---|---|
CPU 時間 | ○ | ○ | ○ | |
ヒープ | ○ | ○ | ○ | |
割り当てられたヒープ | ○ | |||
競合 | ○ | |||
スレッド | ○ | |||
経過時間 | ○ | ○ | Y |
言語の要件と制限の詳細については、言語の入門ページをご覧ください。これらのプロファイルの種類の詳細については、プロファイリングのコンセプトをご覧ください。
サポートされている構成
プロファイル データを収集するようにアプリケーションをインストルメント化する場合は、言語固有のプロファイリング エージェントを追加します。次の表に、サポートされている環境を示します。
環境 | Go | Java | Node.js | Python |
---|---|---|---|---|
Compute Engine | ○ | ○ | ○ | ○ |
Google Kubernetes Engine | ○ | ○ | ○ | ○ |
App Engine フレキシブル環境 | ○ | ○ | ○ | ○ |
App Engine スタンダード環境 | ○ | ○ | ○ | ○ |
Dataproc | ○ | |||
Dataflow | ○ | ○ | ||
Google Cloud の外部 | ○ | ○ | ○ | ○ |
次の表に、サポートされているオペレーティング システムを示します。
オペレーティング システム | Go | Java | Node.js | Python |
---|---|---|---|---|
Linux 標準 C ライブラリの glibc の実装 |
○ | ○ | ○ | ○ |
Linux 標準 C ライブラリの musl の実装 |
○ | ○(アルファ版) | ○ | ○(アルファ版) |
パフォーマンスへの影響
Cloud Profiler は、1 つの Compute Engine ゾーン内に構成されたサービスの 1 つのインスタンスについて、通常 1 分ごとに 10 秒間、プロファイリング データを収集し、1 つのプロファイルを作成します。たとえば、GKE Service が Pod の 10 個のレプリカを実行している場合、10 分間に約 10 個のプロファイルが作成され、各 Pod が約 1 回プロファイリングされます。プロファイリングの期間はランダム化されているため、変動があります。詳細については、プロファイルの収集をご覧ください。
CPU とヒープ割り当てのプロファイリングでデータ収集時に発生するオーバーヘッドは 5% 未満です。実行時間とサービスのレプリカ数で平均すると、一般的なオーバーヘッドは 0.5% 未満で、本番環境システムでの継続的なプロファイリングは有効な選択肢となります。
コンポーネント
Cloud Profiler は、データを収集するプロファイリング エージェントと、収集されたデータの表示や分析を行う Google Cloud のコンソール インターフェースから構成されます。
プロファイリング エージェント
アプリケーションが実行されている仮想マシンにエージェントをインストールします。エージェントはライブラリとして提供され、実行時にアプリケーションに接続します。エージェントは、実行中のアプリからプロファイリング データを収集します。
Cloud Profiler エージェントの実行については、以下をご覧ください。- Go アプリケーションのプロファイリング
- Java アプリケーションのプロファイリング
- Node.js アプリケーションのプロファイリング
- Python アプリケーションのプロファイリング
- Google Cloud の外部で実行されているアプリケーションのプロファイリング
Profiler のインターフェース
エージェントがプロファイリング データを収集した後、Profiler インターフェースを使用して、CPU とメモリの使用量の統計がアプリケーションの領域とどのように関係しているのかを確認できます。
プロファイル データは 30 日間保存されるので、過去 30 日間のパフォーマンス データを分析できます。プロファイルをダウンロードして長期間保存することもできます。
割り当てと上限
Profiler の割り当ての表示と管理については、割り当てと上限をご覧ください。
データ セキュリティ
Cloud Profiler は、VPC Service Controls でサポートされるサービスです。詳しくは、VPC Service Controls のドキュメントをご覧ください。