問題タブ [perf]
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.
cpu-architecture - perf stat 統計の単位
私はいくつかの目的で perf stat を使用しており、ツールの動作をよりよく理解するために、ファイルの内容を別の .xml ファイルにコピーするプログラムを作成しました。750MB のファイルでプログラムを実行しました。統計は以下のとおりです。
各数値の単位は何ですか。私が意味するのはです。それはビット/バイト/または何か他のものですか。前もって感謝します。
linux - 分岐が誤って予測されたソースの場所を見つける
分岐が最も頻繁に誤って予測される関数内の位置を見つけようとしています。次のように、perf を試してみました。
perf record ./a.out
a.out
-ggdb -fno-omit-frame-pointer
マニュアルで推奨されているように、options でコンパイルされました。
これらのスポットを見つけるにはどうすればよいですか?
linux - Linux の「perf」ツールを使用して「オフ CPU」プロファイルを生成する方法
Brendan D. Gregg (DTrace book の著者) は、興味深いプロファイリングのバリエーションを持っています: 「Off-CPU」プロファイリング(およびOff-CPU Flame Graph ;スライド 2013、p112-137 ) は、スレッドまたはアプリケーションがどこでブロックされたか (以前はCPU によって実行されませんが、I/O、pagefault ハンドラーを待機しているか、CPU リソース不足のためにスケジュール解除されています):
今回は、どのコード パスがブロックされ、オフ CPU で待機しているのか、正確な時間はどれくらいかを明らかにします。これは、特定の間隔でスレッドのアクティビティをサンプリングし、(通常は) スレッドが CPU 上で作業を実行している場合にのみスレッドを調べる従来のプロファイリングとは異なります。
また、オフ CPU プロファイル データとオン CPU プロファイルを組み合わせることができます: http://www.brendangregg.com/FlameGraphs/hotcoldflamegraphs.html
Gregg が提供する例dtrace
は、Linux OS では通常利用できない を使用して作成されています。しかし、いくつかの同様のツール (ktap、systemtap、perf) があり、perf
インストール ベースが最も広いと思います。通常、perf
生成されるオン CPU プロファイル (CPU でより頻繁に実行される関数)。
perf
Gregg の Off-CPU の例をLinux のプロファイリング ツールに変換するにはどうすればよいですか?
PS: LISA13 の p124 のスライドに、オフ CPU フレームグラフの systemtap バリアントへのリンクがあります。「Yichun Zhang がこれらを作成し、Linux 上で SystemTap を使用してプロファイル データを収集しています。参照: • http://agentzh .org/misc/slides/off-cpu-flame-graphs.pdf " " (2013 年 8 月 23 日の CloudFlare Beer Meeting)
macos - Macに「perf」をインストール
Mac でプログラムを監視するには、"perf" ユーティリティが必要です。Linux には付属していることは知っていますが、Mac でも利用できますか?
私は OSX 10.9 Mavericks で作業しており、perf または linux-tools の「ポート検索」を試みましたが、結果が得られませんでした。
linux - 「cpsie」アーム命令の場合、TLB はミスしますか?
プログラムのプロファイリングを行ったところ、「_raw_spin_unlock_irq」システム コールが ARM Cortex A15 ボードで多くの iTLB ミスを引き起こしていることがわかりました。アセンブリ コードを注意深く確認したところ、"cpsie" 命令が原因の 1 つである可能性があることがわかりました。したがって、私は自分の仮定を検証するために短いコードをプログラムしました。
以下は私のコードです:
次に、perf ツールを使用して iTLB ミスを確認したところ、次のように報告されました。
89172 dTLB ロードミス
5694 dTLB ストア ミス
43248 iTLB ロードミス
「cpsie i」命令を削除すると、結果は次のようになります。
23453 dTLB ロードミス
1453 dTLB ストア ミス
12035 iTLB ロードミス
結果は、「cpsie i」が iTLB ミスの 4 倍に増加したことを示しています。パフォーマンス レポートを使用してバイナリ コードに注釈を付けました。69.5% の iTLB ミスが "cpsie i" 命令の後に隣接して発生しました。
「cpsie i」命令の後に多くの iTLB ミスが発生したのはなぜですか? それを防ぐ方法はありますか?ありがとう!
perf - perf.data からイベントを分割/フィルタリングする方法は?
質問: 複数のイベントを持つ perf.data から特定のイベントのサンプルを抽出する方法はありますか?
環境
次のようなものを実行して取得した2つのイベントの記録されたサンプルがあります
私が見る限り、 や などの他の perf コマンドには、イベント フィルター フラグがperf diff
ありperf script
ません。したがって、 perf.dataをcycle.perf.dataとinstruction.perf.dataに分割すると便利です。
ありがとう!