2016-07-04 27 views
1

perf version 3.0.8を使用して、埋め込みシステムのプロファイルを作成しますLinux kernel version 3.0.8PerfツールLinux - No Call-Graph

私はzlibとelfutilsを使ってツール/ perfをクロスコンパイルしました。

このツールに慣れるために、-gオプションを使用してコンパイルされた簡単なクイックソートの例を使用しています。

私はperf record -F 99 -g -- ./qsort(この例からコピー)を実行してからperf report --stdioを実行して、私のプロファイルの結果を表示します。あなたがすべてであり、トレースを呼び出すされていない見ることができるように

No kallsyms or vmlinux with build-id f41dfb5606beda1d75171db69f1e9466cb4868ba was found 
[hi3518_dsu] with build id f41dfb5606beda1d75171db69f1e9466cb4868ba not found, continuing without symbols 
No kallsyms or vmlinux with build-id a0f9a05faf6bcfb72282a03e048b47e8a8c0f2ec was found 
[hi3518_tde] with build id a0f9a05faf6bcfb72282a03e048b47e8a8c0f2ec not found, continuing without symbols 

# Events: 256 cpu-clock 
    # 
    # Overhead Command  Shared Object     Symbol 
    # ........ ....... ................. ...................... 
    # 
     96.88% qsort qsort    [.] partition 
     0.78% qsort [kernel.kallsyms] [k] __do_softirq 
     0.39% qsort [kernel.kallsyms] [k] __wake_up_sync_key 
     0.39% qsort [kernel.kallsyms] [k] get_page_from_freelist 
     0.39% qsort [kernel.kallsyms] [k] __memzero 
     0.39% qsort [kernel.kallsyms] [k] div_s64_rem 
     0.39% qsort [hi3518_tde]  [k] 0x58 
     0.39% qsort [hi3518_dsu]  [k] 0x8154 

これはperf report -g --stdio出力のスナップショットです。私は本当に私のシステムの深いところで勉強することに興味があり、コールトレースなしではこれらの結果は役に立たない。

答えて

0

プロファイルしようとしているプログラムをコンパイルしているときに、-fno-omit-frame-pointerフラグを使って運が悪くなるかもしれません。 ARMの組み込みシステムでコールグラフをperfで処理することも問題になっています。

+0

すでに完了しています。それは動作しません。だから、私は別のボード(別のSoCと新しいカーネルバージョン)で試して、魔法のようにうまく動作します。明らかにこの問題は私の能力にある。おそらく私のカーネルバージョンは非常に古くなっているでしょう... '-g'オプションがなくても、私はパフォーマンス分析の結果を読み、使用することができます。 –

0

解決策が見つかりました。 perf --call-graph dwarf -- ./qsortデバッグシンボル(-g、-ggdb、または-gdwarfフラグ)を使用してプログラムをコンパイルしていることを確認してください。さらに、システムで使用しているライブラリのデバッグシンボルをインストールする必要があるかもしれません。 https://fedoraproject.org/wiki/StackTracesは、Fedoraのデバッグシンボルパッケージをインストールする方法を示しています。

--call-graph dwarfでperfコマンドが失敗する場合は、elfutilsに加えてlibunwindでperfをコンパイルする必要があります。

0

おそらく私のprefバージョンは本当に古いです(あるいはカーネルツール)。私は別のsoc(新しいカーネルとperfツールを使って)を試して、コールスタックは適切に動作します。 しかし、この機能がなくても、私はこのツールを有益に利用しています。

関連する問題