問題タブ [pprof]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
16406 参照

go - golang pprof が動作しない

いくつかの golang アプリケーションのプロファイルを作成しようとしましたが、うまくいきませんでした。次の 2 つのチュートリアルに従いました。

どちらも、アプリケーションにいくつかのコード行を追加した後、アプリを実行する必要があると言っています。私はそれを実行しましたが、画面に次のメッセージが表示されました。

2015/06/16 12:04:00 プロファイル: CPU プロファイリングが有効、/var/folders/kg/4fxym1sn0bx02zl_2sdbmrhr9wjvqt/T/profile680799962/cpu.pprof

したがって、プロファイリングが実行され、ファイルに情報が送信されていることがわかりました。

しかし、ファイル サイズを見ると、テストしたどのプログラムでも常に 64 バイトです。

cpu.pprof ファイルを pprof で開こうとして「top10」コマンドを実行すると、ファイルに何も入っていないことがわかります。

(「./fact」は私のアプリです)

go tool pprof ./fact /var/folders/kg/4fxym1sn0bx02zl_2sdbmrhr9wjvqt/T/profile680799962/cpu.pprof

トップ10 -->

(pprof) top10 0 of 0 total ( 0%) flat flat% sum% cum cum%

だから、私がプロファイリングしているときは何も起こっていないようです。

Mac(この例)とubuntuで、3つの異なるプログラムでテストしました。

私が間違っていることを知っていますか?

次に、サンプル プログラムは非常に単純です。これがコードです (インターネットから取得した非常に単純な階乗プログラムです)。

ありがとう、フェル

0 投票する
1 に答える
1209 参照

google-perftools - gperftools は内部でどのように機能しますか?

gperftoolsの仕組みの簡単な説明を探しています。これまでのところ、これは私が学んだことです:

  • 世界を止めるサンプラーを実行します。つまり、プロファイリング中のプログラムを定期的に停止して、情報を収集します。
  • Golang の pprof ライブラリは、その下で gperftools を使用します。

一般的な概要に加えて、いくつかの具体的な質問にお答えください。

  • gperftools は「イベント ベースのプロファイラー」または「インストルメンテーション プロファイラー」ですか。私が理解していることから、これらのプロファイラーはプログラムの実行方法を変更し、それらの変更を介してサンプルを収集します
  • OS のどの「レベル」で gperftools がプロファイリングしますか? SystemTapperfのようにカーネルをプロファイリングしますか?
  • 高トラフィックの運用サーバーで gperftools を安全に実行できますか?

この質問は、Go サーバーで pprof を使用することによって発生するオーバーヘッドについて考えさせるために行っています。

0 投票する
1 に答える
624 参照

go - http エンドポイントの代わりにアプリケーション PID を使用する go ツール pprof

現在、go ツールの pprof を次のように使用して、Go アプリケーションのプロファイリングを行っています。

不明なポートで http サーバーを実行している任意の Go プロセスで pprof ツールを使用したいと考えています。プロセスについて私が持っている唯一の情報は、その PID です。次の2つのいずれかを行う必要があります。

  • PID から Go プロセスのポート番号を取得します。
  • 実行中のプロセスを直接プロファイリングします。たとえばgo tool pprof 10303、PID が 10303 のようなものです。

これらのいずれかが機能しますか?

0 投票する
2 に答える
8303 参照

linux - Pprof と golang - 結果を解釈する方法は?

プログラムで pprof を使用しようとしていますが、読んだ記事 (以下のリンク) とは少し異なる結果が得られます。私の結果では、次のようなテーブルを取得しています。

この列は何ですか: flat flat% sum% cum cum%?

私が読んでいた記事: https://software.intel.com/en-us/blogs/2014/05/10/debugging-performance-issues-in-go-programs http://blog.golang.org/profiling-ゴープログラム

0 投票する
1 に答える
481 参照

go - トレーニング用の Golang プロファイリングの簡単な例

私は会社で Go トレーニングを行っており、最善の方法で pprof パッケージを提示したいと考えています。私の例は、pprof の威力を単純に示すには不十分だと思います。go std ライブラリのみを使用したい。コードは、ボトルネックのある単純な呼び出しグラフを提供するはずです。

私の現在のワークフローは次のとおりです。 1. webserver に pprof を含めます 2. webserver を実行します (30 秒間データを収集します (デフォルト)) 3. webserver に対していくつかの curl ショットを実行します 4. pprof グラフを表示します

私のコードは以下のようになります:

フィルタリングなしの Pprof

すべてのppf

handler() 関数のみの Pprof

ここに画像の説明を入力

0 投票する
1 に答える
284 参照

google-app-engine - Golang プロファイリング appengine テスト

大きなファイルの受信と GCS への送信に関連するメモリ リークが発生しているようです。appengine コードのメモリ使用量をプロファイリングするために pprof を使用しようとしています。私のテストでは appengine/aetest を使用しており、メモリ プロファイルを出力できますが、結果は役に立たないようです。

まず、ベンチマークを作成しました。これは非常に遅い操作であるため、一度しか実行されません。

私の関数呼び出しは何も表示されず、この 0.5 MB の数値は明らかに正しくありません (12 MB のファイルを開いてアップロードしています)。実際のメモリ プロファイルを取得するにはどうすればよいですか?

0 投票する
1 に答える
309 参照

go - 複数のゴルーチンをプロファイリングする方法

Go で記述されたサーバーのプロファイルを作成したいと考えています。「net/http/pprof」を使用していますが、プロファイリング データを提供するサーバーを実行しているゴルーチンのみをプロファイリングしているように見えるため、デフォルトの動作はまったく役に立ちません。