問題タブ [google-perftools]
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.
ruby - perftools.rb 出力の Module#__temp__
Ruby コードの一部をプロファイリングすると、perftools.rb は次の出力を示します。
したがって、ほとんどの時間は、 として指定されたメソッドで費やされ#<Module:0x007ff364e2bfd0>#__temp__ます。これが正確にどこにあるのかについて、より多くの情報を得るにはどうすればよいですか?
profiling - GPerfTools のサンプル数の解釈
GPerfTools が生成するテキスト出力を読むのに少し苦労しています。問題の一部は、サンプリング方法がどのように機能するかを完全に理解していないことだと思います。
ウィキペディアから、サンプル関数に基づくプロファイラーは通常、OS に割り込みを送信し、プログラムの現在の命令ポインターを照会することによって機能することがわかっています。アセンブリに関する私の知識は少し錆びているので、命令ポインターmがいつでもメソッドを指している場合、それは何を意味するのだろうか? つまり、関数が呼び出されようとしていることを意味するのでしょうか、それとも現在実行されていることを意味するのでしょうか、あるいはその両方でしょうか?
最初のケースではサンプル数 (つまり、サンプルを取得している間に m が見られる回数) は m の絶対呼び出し回数に変換されますが、後者の場合は単純に見られた回数に変換されるため、違いがあります。つまり、このメソッドで費やされた相対的な時間の単なる指標です。
誰かが明確にすることができますか?
gcc - gperftools CPU プロファイラーはどのように正確に起動しますか?
gperftools のドキュメントにはlibprofiler、ターゲット プログラムにリンクする必要があると記載されています。
(プログラムのコードを変更することなく)。
次に、特定の環境変数を使用してプログラムを実行する必要があります。
問題はlibprofile、プロファイラーがロードされただけで、その関数が呼び出されていない場合、どのようにしてプロファイラーを開始および終了する機会があるかということです。
そのライブラリにはコンストラクタ関数はありません (証明)。 ライブラリ コード内の「CPUPROFILE」はすべて、プロファイラーが開始される場所を指すわけではありません。
次はどこを見ればいいですか?
go - Goプログラムでpprofを使用する方法
Goプログラムでpprofを使用する方法は?
net / http / pprofという名前のGoパッケージがありますが、使用できません。
ドキュメントにはgo tool pprof http://localhost:6060/debug/pprof/heap、これは機能しないと書かれています。
そして、以下の_はどういう意味ですか?
import _ "net/http/pprof"
profiling - 複数の google-pprof ファイルを組み合わせる (pproc CPU プロファイラー)
ここで説明されている google-perftools (gperftools の libprofiler.so ) の CPU Profiler を使用したい: http://gperftools.googlecode.com/svn/trunk/doc/cpuprofile.html
私のセットアップでは、プロファイリングするプログラムを数回実行して (最大 1500 回、実行ごとに異なります)、すべての実行 (または実行の一部のサブセット) からの pprof 出力を単一の pprof ファイルに結合します。
これどうやってするの?
PS: 私のプログラムは共有ライブラリをほとんど使用しないため、単一のバイナリ (elf) ファイルのみが分析されます。
PPS: Chris のおかげで、pprof は複数のプロファイルを使用できます。
google-perftools - google-perftools ヒープ プロファイラーのスタック トレースにシンボルを表示する方法
TDD 環境で google-perftools ヒープ プロファイラーを使用しています。最後に、pprof を使用してホット スポットを確認できるヒープ ダンプを取得します。シンボルは表示されますが、スタック内でどのようにリークが発生したかについての情報はほとんどまたはまったく提供されません。実際、私が見ることができる出力には組織がまったくありません。
最大のリークのスタック トレースは実行時に表示されますが、シンボルは表示されません。PPROF_PATH 環境変数を正しく設定していますが、効果がありません。どうすればこれを有効にできますか?
c++ - RCpp を使用して R スクリプトをプロファイリングするために gperftools を使用していますか?
http://pj.freefaculty.org/blog/?p=140の最後の (3 番目の) アプローチで R スクリプトのプロファイルを作成しようとしています。私がしていること(以下で説明)は正しいのだろうか?
まず、my.cppでは、リンクに を追加するよう#include <gperftools/profiler.h>に記載されていますが、これは機能しません。ヘッダーが別のディレクトリにあることがわかりました。私にとっては#include <google/profiler.h>.
次に、プロファイリングするコードの周りに次のコードを配置します
次に、以下を含むスクリプト mytest.R を作成しました。
最後に、bash で実行すると
Rセッションを実行し、Rmytest.R内のコンテンツを実行し、出力後にRを終了します
プロファイリングが正常に実行されたことを意味しますか? 「中断」と「立ち退き」は私には面倒に見えます。
へのプロファイリング出力を生成しますmyprofile.log。
私は見えます
最後の列のエントリは人間が読めるものではありません。
私は何かを見逃しているのだろうか?ありがとう!
google-perftools - gperftools は内部でどのように機能しますか?
gperftoolsの仕組みの簡単な説明を探しています。これまでのところ、これは私が学んだことです:
- 世界を止めるサンプラーを実行します。つまり、プロファイリング中のプログラムを定期的に停止して、情報を収集します。
- Golang の pprof ライブラリは、その下で gperftools を使用します。
一般的な概要に加えて、いくつかの具体的な質問にお答えください。
- gperftools は「イベント ベースのプロファイラー」または「インストルメンテーション プロファイラー」ですか。私が理解していることから、これらのプロファイラーはプログラムの実行方法を変更し、それらの変更を介してサンプルを収集します
- OS のどの「レベル」で gperftools がプロファイリングしますか? SystemTapやperfのようにカーネルをプロファイリングしますか?
- 高トラフィックの運用サーバーで gperftools を安全に実行できますか?
この質問は、Go サーバーで pprof を使用することによって発生するオーバーヘッドについて考えさせるために行っています。