クイックスタート: プロファイラの確認

このページでは、Cloud Profiler を設定して使用する方法について説明します。サンプルの Go プログラムをダウンロードし、プロファイリングを有効にしてサンプル プログラムを実行してから、収集されたデータを Profiler インターフェースで調査します。

始める前に

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

    プロジェクト セレクタに移動

  3. プロジェクトで Cloud Profiler API を有効にするには、Google Cloud Console のナビゲーション パネルで [Profiler] をクリックするか、次のボタンを使用します。

    Profiler に移動

  4. Cloud Shell を開くには、Google Cloud Console のツールバーで [Cloud Shell をアクティブにする] をクリックします。

    Cloud Shell をアクティブにします。

    しばらくすると、Google Cloud Console 内で Cloud Shell セッションが開きます。

    Cloud Shell セッション。

プロファイリングするプログラムを取得する

サンプル プログラム main.go は、GitHub の golang-samples リポジトリにあります。ここで Go サンプルのパッケージを取得します。

go get -u github.com/GoogleCloudPlatform/golang-samples/profiler/...

パッケージの取得が完了するまでに少し時間がかかります。

コードをプロファイリングする

取得したパッケージ内の Profiler サンプルコードのディレクトリに移動します。

cd ~/gopath/src/github.com/GoogleCloudPlatform/golang-samples/profiler/profiler_quickstart

main.go プログラムは、CPU 使用率の高いワークロードを作成し、プロファイラにデータを提供します。プログラムを起動し、実行したままにします。

 go run main.go

このプログラムは、実行時に CPU をロードするように設計され、また、実行中のプログラムからプロファイリング データを収集し、定期的に保存する Profiler を使用するように構成されています。

プログラムを起動すると、数秒後に profiler has started メッセージが表示されます。約 1 分後には、さらに次の 2 つのメッセージが表示されます。

 successfully created profile CPU
 start uploading profile

これらのメッセージは、プロファイルが作成され、Cloud Storage プロジェクトにアップロードされたことを示しています。プログラムは、実行されている限り、1 分間に約 1 回、最後の 2 つのメッセージを出力します。

サービスの開始後にアクセス拒否エラー メッセージが表示された場合は、考えられる原因についてアクセス拒否エラーが発生する理由をご覧ください。

Profiler のインターフェース

アプリケーションを起動してからしばらくすると、Profiler に最初のプロファイル データが表示されます。このインターフェースには、プロファイリング データの調査に使用する一連のコントロールとフレームグラフが表示されます。

サンプルコードと Profiler のインターフェース

時間コントロールの下にあるオプションを使用して、使用するプロファイリング データのセットを選択します。複数のアプリケーションをプロファイリングする場合、サービスを使用して、プロファイリングされるデータの送信元を選択します。[プロファイルの種類] では、表示するプロファイル データのタイプを選択します。[ゾーン名] と [バージョン] では、Compute Engine ゾーンまたはアプリケーションのバージョンを選択し、画面に表示するデータを制限します。[重み] を使用すると、リソース消費のピーク時にキャプチャされたプロファイルを選択できます。

フレームグラフに表示する分析対象のプロファイルを絞り込むには、フィルタを追加します。上のスクリーンショットでは、フィルタバー に 1 つのフィルタが表示されています。このフィルタ オプションは Metric で、フィルタ値は CPU time です。

データを調べる

選択コントロールの下に、プログラムのコールスタックがフレームグラフで表示されます。フレームグラフでは、各関数がフレームで表示されます。フレームの幅は、その関数によるリソース消費の割合を表します。一番上のフレームはプログラム全体を表します。このフレームのリソース消費量は常に 100% になります。このフレームには、このグラフの平均化に使用されているプロファイルの数も表示されます。

サンプル プログラムには、複雑な呼び出しスタックはありません。上のスクリーンショットには 5 つのフレームが表示されています。

  • 灰色の枠は実行可能ファイル全体を表し、100% のリソースを消費しています。
  • 緑色の main フレームは Go runtime.main です。
  • オレンジ色の main フレームは、サンプル プログラムの main ルーチンです。
  • オレンジ色の busyloop フレームは、サンプルの main から呼び出されるルーチンです。
  • オレンジ色の main.load フレームは、サンプルの main から呼び出されるルーチンです。

フィルタ セレクターを使用すると、名前に一致する関数を除外できます。たとえば、ユーティリティ関数の標準ライブラリをグラフから削除できます。また、特定のメソッドから発生したコールスタックを除外することも、別の方法でグラフを単純化することもできます。main.go アプリケーションは単純なので、あまりフィルタリングする必要はありません。

単純なアプリケーションの場合でも、フィルタを使用して不要なフレームを非表示にすると、目的のフレームが見やすくなります。たとえば、サンプルコードのプロファイリング画面では、灰色のフレームがその下の最初の main フレームよりもわずかに大きくなっています。これは、main コールスタックがリソースのほとんどを消費していることを表しています。では、ほかにリソースを消費しているものはないのでしょうか。アプリケーションの main ルーチンの外部で発生している消費量を確認するには、main ルーチンのコールスタックを非表示にするフィルタを追加します。ここでは、main の外部で発生しているリソース消費は 0.227% になっています。

サンプル プログラムのスタックを表示しない

フィルタリングやプロファイリング データの探索方法の詳細については、Profiler インターフェースの使用をご覧ください。

次のステップ

より一般的な情報が必要な場合:

Cloud Profiler エージェントの実行については、以下をご覧ください。