問題タブ [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.

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

xcode - フレーム グラフによる Node.js パフォーマンスの分析 (Mac の場合)

フレーム グラフは、プロファイリングされたソフトウェアを視覚化したものであり、最も頻繁に使用されるコード パスを迅速かつ正確に特定できます —フレーム グラフに関する Brendan Gregg

node --perf-basic-profXcode Instruments ( Macの場合)を使用すると、パフォーマンス分析用のフレーム グラフを生成するのに役立ちます。このガイドに従うと、かなり簡単です。

  1. node.js 0.12 をperf-<pid>.map使用して生成するようにしましたnode --perf-basic-prof app.js
  2. Xcode インスツルメント タイム プロファイラーを使用してスタックを記録する (としてエクスポートprofile.csv)
  3. Brendan Gregg perl ツールを使用してフレーム グラフを生成します。./stackcollapse-instruments.pl profile.csv | ./flamegraph.pl > graph.svg

悲しいことに、生成されたフレーム グラフは、このように名前の代わりに (代わりに)perf-<pid>.mapメソッド アドレスを残すことの恩恵を受けません。1cfc9a09b880LazyCompile:~ /node_modules/benchmark/benchmark.js:1870

メソッド名を含むcsvファイルを生成するために、マッピング/シンボルをXcodeインストゥルメントに与える方法はありますか(これは機能しません)?

0 投票する
0 に答える
1589 参照

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

誰でも私を助けてもらえますか?この問題を克服するために。

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

java - Java Flight Recorder で切り捨てられたスタック トレースを回避する方法

Oracle Java Flight Recorderを使用して、Java アプリケーションのスタック トレース サンプルを収集しています。これらのスタック トレースにより、最終的にCPU Flamegraphを生成できます。

私の問題は、64 フレームよりも深いスタック トレースが Java Flight Recorder によって切り捨てられることです。Flamegraph で観察するのは非常に簡単で、デバッガーを使用するとFLRStackTrace、64 を超えるFLRFrames がなく、64 フレームのほぼすべてのスタック トレースで TruncationState が に設定されていることがわかりますTRUNCATED

この 64 フレームの制限を増やすことができるかどうかは誰にもわかりませんか? スタック トレースが不完全な場合、フレームグラフは役に立ちません。

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

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

0 投票する
0 に答える
427 参照

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-profWeb ユーザーの下で node.js アプリを実行したところ、プロセスの一時フォルダーに perf マップ ファイルが生成されることがわかりました。

2) 1 日後、次のコマンドを使用してフレーム グラフ自体を生成しようとしました。

フレーム グラフは生成されましたが、非常に奇妙に見えます。エントリはほとんどなく、一部は不明で、コードで発生しているものとはかけ離れています。

ここに画像の説明を入力

なぜこうなった?ここで何が欠けていますか?プロミスまたはジェネレーターを実行しているnode.jsに関連している可能性があります(私はそれを非常に疑っています)。サンプリングが 30 秒で、ほとんどのアクティビティが約 4 時間前に発生したためでしょうか? この種のフレーム グラフを取得するにはどうすればよいでしょうか。他に何かする必要がありますか?

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

linux-kernel - Linux の perf ユーティリティはスタック トレースをどのように理解しますか?

Linux の perf ユーティリティは、Brendan Gregg が c/c++、jvm コード、nodejs コードなどのフレームグラフを生成するために使用したことで有名です。

Linux カーネルはスタック トレースをネイティブに理解しますか? プロセスがまったく異なる言語で記述されている場合でも、ツールがプロセスのスタック トレースをどのようにイントロスペクトできるかについて、どこで詳しく読むことができますか?