2

Linux 3.10 および perf ツール 3.4 バージョンを搭載した arm cortex a7 マシンでパフォーマンスを測定する単純なプログラムがあります。

プログラム:

#include<stdio.h>
int i=0;
void main2(void)
{
for(i=0;i<20000;i++);
}
void main3(void)
{
for(i=0;i<30000;i++);
}
void main4(void)
{
for(i=0;i<40000;i++);
}
void main5(void)
{
for(i=0;i<50000;i++);
}
main(void)
{
printf("Main2\n");
main2();
printf("Main3\n");
main3();
printf("Main4\n");
main4();
printf("Main5\n");
main5();
}

フレーム グラフを使用して視覚化された perf ツール データ

#perf record -F 5000 -g a.out
#perf script 1>temp1 2>temp2
#stackcollapse-perf.pl temp1 > temp
#flamegraph.pl temp > temp.svg

temp.svgは以下です

ここに画像の説明を入力

ここで私の疑問は、なぜそれらが発生するのか不明なトレースです。サンプリングレートを 5000 に上げた理由は、99 前後の場合、main2 と main3 を表示できないためです。

更新: 上記のunknownシンボルは、perf がクロス プラットフォームでシンボルを認識しないためです。そのため、グラフは未知のシンボルの 16 進アドレスに unknown を配置するだけreportです。私は、レポートとperf 一緒にスローエラーのレポートを観察しました

[trout_fm] with build id 71f5660a1b9cba292e6bb94a5ba3ac20644852dd not found, continuing without symbols 

これは、私の vmlinux ビルド ID と perf.data のビルド ID が一致しないためですか? そう思います !

もしそうなら、perf.dataはどこからビルドIDを取得しましたか?

同じイメージを注意深くフラッシュし、同じ vmlinux を使用している場合 perf report -k vmlinux

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

4

0 に答える 0