問題タブ [flamegraph]
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.
xcode - フレーム グラフによる Node.js パフォーマンスの分析 (Mac の場合)
フレーム グラフは、プロファイリングされたソフトウェアを視覚化したものであり、最も頻繁に使用されるコード パスを迅速かつ正確に特定できます —フレーム グラフに関する Brendan Gregg
node --perf-basic-prof
Xcode Instruments ( Macの場合)を使用すると、パフォーマンス分析用のフレーム グラフを生成するのに役立ちます。このガイドに従うと、かなり簡単です。
- node.js 0.12 を
perf-<pid>.map
使用して生成するようにしましたnode --perf-basic-prof app.js
- Xcode インスツルメント タイム プロファイラーを使用してスタックを記録する (としてエクスポート
profile.csv
) - Brendan Gregg perl ツールを使用してフレーム グラフを生成します。
./stackcollapse-instruments.pl profile.csv | ./flamegraph.pl > graph.svg
悲しいことに、生成されたフレーム グラフは、このように名前の代わりに (代わりに)perf-<pid>.map
メソッド アドレスを残すことの恩恵を受けません。1cfc9a09b880
LazyCompile:~ /node_modules/benchmark/benchmark.js:1870
メソッド名を含むcsvファイルを生成するために、マッピング/シンボルをXcodeインストゥルメントに与える方法はありますか(これは機能しません)?
android - ビルド ID が見つからず、シンボルなしで続行し、クロス プラットフォームで Linux パフォーマンスが発生する
Linux 3.10 および perf ツール 3.4 バージョンを搭載した arm cortex a7 マシンでパフォーマンスを測定する単純なプログラムがあります。
プログラム:
フレーム グラフを使用して視覚化された perf ツール データ
temp.svgは以下です
ここで私の疑問は、なぜそれらが発生するのか不明なトレースです。サンプリングレートを 5000 に上げた理由は、99 前後の場合、main2 と main3 を表示できないためです。
更新: 上記のunknown
シンボルは、perf がクロス プラットフォームでシンボルを認識しないためです。そのため、グラフは未知のシンボルの 16 進アドレスに unknown を配置するだけreport
です。私は、レポートとperf
一緒にスローエラーのレポートを観察しました
これは、私の vmlinux ビルド ID と perf.data のビルド ID が一致しないためですか? そう思います !
もしそうなら、perf.dataはどこからビルドIDを取得しましたか?
同じイメージを注意深くフラッシュし、同じ vmlinux を使用している場合
perf report -k vmlinux
誰でも私を助けてもらえますか?この問題を克服するために。
java - Java Flight Recorder で切り捨てられたスタック トレースを回避する方法
Oracle Java Flight Recorderを使用して、Java アプリケーションのスタック トレース サンプルを収集しています。これらのスタック トレースにより、最終的にCPU Flamegraphを生成できます。
私の問題は、64 フレームよりも深いスタック トレースが Java Flight Recorder によって切り捨てられることです。Flamegraph で観察するのは非常に簡単で、デバッガーを使用するとFLRStackTrace
、64 を超えるFLRFrame
s がなく、64 フレームのほぼすべてのスタック トレースで TruncationState が に設定されていることがわかりますTRUNCATED
。
この 64 フレームの制限を増やすことができるかどうかは誰にもわかりませんか? スタック トレースが不完全な場合、フレームグラフは役に立ちません。
rhel5 - systemtap がフレームグラフの作成に必要な出力を生成しないのはなぜですか?
フレームグラフ データを生成する目的で stap を実行すると、out.stap-stacks にプロセス データがないのはなぜですか?
- OS:RHEL5.10.0.2
- カーネル: 2.6.18-371.11.1.el5
- システムタップ: 1.8-6.el5
インストールされたパッケージ:
systemtap-sdt-devel-1.8-6.el5
systemtap-devel-1.8-6.el5
systemtap-devel-1.8-6.el5
systemtap-runtime-1.8-6.el5
systemtap-sdt-devel-1.8-6.el5
systemtap-1.8-6.el5
systemtap-initscript-1.8-6.el5
systemtap-client-1.8-6.el5
systemtap-server-1.8-6.el5
systemtap-testsuite-1.8-6.el5
カーネル-devel-2.6.18-371.11.1.el5
カーネル-デバッグ-devel-2.6.18-371.11.1.el5
使用したコマンド:
out.stap-stacks ファイルのサンプル:
0xffffffff8000e81a 0x0 1 0xffffffff8004ab87 0x0 1 0xffffffff8025d15d 0x0 1 0xffffffff80239356 0x0 1 0xffffffff8004219a 0x0 1 0xffffffff8000ca32 0x0 1 0xffffffff8003214e 0x0 1 0xffffffff80013bc8 0x0 1 0xffffffff80232d41 0x0 1 0xffffffff8001a4ca 0x0 1 0xffffffff80011db5 0x0 1 0xffffffff8004aad2 0x0 1 0xffffffff800ec8bb 0x0 1 0xffffffff8003ead5 0x0 1 0xffffffff80234c43 0x0
javascript - Node.js フレーム グラフ ノートが正常に動作する
node.js アプリの ubuntu 14.04 でフレーム グラフを生成しようとしています。このガイド (Brendan Gregg) を使用しました: http://www.brendangregg.com/blog/2014-09-17/node-flame-graphs-on-linux.html。
1) --perf-basic-prof
Web ユーザーの下で node.js アプリを実行したところ、プロセスの一時フォルダーに perf マップ ファイルが生成されることがわかりました。
2) 1 日後、次のコマンドを使用してフレーム グラフ自体を生成しようとしました。
フレーム グラフは生成されましたが、非常に奇妙に見えます。エントリはほとんどなく、一部は不明で、コードで発生しているものとはかけ離れています。
なぜこうなった?ここで何が欠けていますか?プロミスまたはジェネレーターを実行しているnode.jsに関連している可能性があります(私はそれを非常に疑っています)。サンプリングが 30 秒で、ほとんどのアクティビティが約 4 時間前に発生したためでしょうか? この種のフレーム グラフを取得するにはどうすればよいでしょうか。他に何かする必要がありますか?
linux-kernel - Linux の perf ユーティリティはスタック トレースをどのように理解しますか?
Linux の perf ユーティリティは、Brendan Gregg が c/c++、jvm コード、nodejs コードなどのフレームグラフを生成するために使用したことで有名です。
Linux カーネルはスタック トレースをネイティブに理解しますか? プロセスがまったく異なる言語で記述されている場合でも、ツールがプロセスのスタック トレースをどのようにイントロスペクトできるかについて、どこで詳しく読むことができますか?