2013-03-28 9 views
7

Android systraceツール、atraceツールを介してADB。しかし、私はトレースファイルの形式をよく理解していません。どうやらそれはLinux ftraceツールと非常に似ていますが、いくつかの違いがあります。主な違いは、System.Mapファイルを使用していないが、すべての情報がトレースファイルに含まれていることです。また、アンドロイド特有の新しいB | Eエントリがあります。 http://androidxref.com/4.1.1/xref/external/chromium-trace/src/tracing/linux_perf_importer.jsAndroid Systraceトレースファイル形式

しかし、その文書で我々は形式は、Linux パフォーマンス・ツールに属していることを読み取ることができます。

は、Androidのソースコードでは、このフォーマットに関するいくつかの情報があります。私はそうは思わない、Linuxのperfは出力として非常に異なるフォーマットを提供する...(いくつかの特別な構成がアクティブでない限り...)

私の質問はどこにありますか? atraceツールから生成されたアンドロイドトレースファイル?

このフォーマットはおなじみですか?

# tracer: nop 
# 
# entries-in-buffer/entries-written: 66427/66427 #P:2 
# 
#        _-----=> irqs-off 
#       /_----=> need-resched 
#       |/_---=> hardirq/softirq 
#       ||/_--=> preempt-depth 
#       |||/ delay 
#   TASK-PID CPU# |||| TIMESTAMP FUNCTION 
#    | |  | ||||  |   | 
      atrace-1724 [000] d..3 14186.680000: sched_switch: prev_comm=atrace prev_pid=1724 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120 
      <idle>-0  [000] d.h7 14186.690000: sched_wakeup: comm=tfm_b6bcf800 pid=1714 prio=35 success=1 target_cpu=000 
      <idle>-0  [000] d..3 14186.690000: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=tfm_b6bcf800 next_pid=1714 next_prio=35 
    tfm_b6bcf800-1714 [000] d..3 14186.690000: sched_switch: prev_comm=tfm_b6bcf800 prev_pid=1714 prev_prio=35 prev_state=D|W ==> next_comm=swapper/0 next_pid=0 next_prio=120 
      <idle>-0  [001] d.h3 14186.690000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001 
      <idle>-0  [001] d..3 14186.690000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Player Aud Mixe next_pid=146 next_prio=35 
Player Aud Mixe-146 [001] d..3 14186.690000: sched_switch: prev_comm=Player Aud Mixe prev_pid=146 prev_prio=35 prev_state=D ==> next_comm=swapper/1 next_pid=0 next_prio=120 
      <idle>-0  [001] d.h3 14186.690000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001 
      <idle>-0  [001] d..3 14186.690000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Player Aud Mixe next_pid=146 next_prio=35 
Player Aud Mixe-146 [001] d..3 14186.690000: sched_switch: prev_comm=Player Aud Mixe prev_pid=146 prev_prio=35 prev_state=S ==> next_comm=swapper/1 next_pid=0 next_prio=120 
      <idle>-0  [001] d.h3 14186.700000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001 
      <idle>-0  [001] d..3 14186.700000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Player Aud Mixe next_pid=146 next_prio=35 
    EventThread-110 [001] d..5 14190.100000: sched_wakeup: comm=SurfaceFlinger pid=103 prio=112 success=1 target_cpu=001 
    EventThread-110 [001] d..3 14190.100000: sched_switch: prev_comm=EventThread prev_pid=110 prev_prio=111 prev_state=S ==> next_comm=SurfaceFlinger next_pid=103 next_prio=112 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|onMessageReceived 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|handleTransaction 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|doTransaction 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|handleMessageInvalidate 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|onMessageReceived 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|handleMessageRefresh 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|rebuildLayerStacks 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|computeVisibleRegions 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: E 
    SurfaceFlinger-103 [001] ...1 14190.100000: tracing_mark_write: B|96|doComposition 
    SurfaceFlinger-103 [001] d.h4 14190.100000: sched_wakeup: comm=surfaceflinger pid=96 prio=120 success=1 target_cpu=001 
    SurfaceFlinger-103 [001] d..3 14190.100000: sched_switch: prev_comm=SurfaceFlinger prev_pid=103 prev_prio=112 prev_state=R ==> next_comm=surfaceflinger next_pid=96 next_prio=120 

ありがとうございます!

+0

あなたが探しているものではないかもしれませんが、参考にしてください:http://developer.android.com/tools/help/systrace.html –

+1

上記のログを生成するのにどのコマンドを使用しましたか? "tracing_mark_write:B |"を含む行を生成するコマンドが見つかりませんでした。と "tracing_mark_write:E" – Duke

+0

_atrace_コマンドはAndroidシェルコンソール(adb)の "隠し"コマンドです。一般的に_systrace_ pythonスクリプトによって呼び出されます。私は手動で_atrace_を実行してこのログを取得しました。 –

答えて

4

これは確かです:フォーマットはftraceツールに属します。 Android atraceは、ftraceビルドの拡張です。

次にftraceからの公式ドキュメントには、この出力フォーマットを直接、次のようにそれにより製造することができることを示しています

[email protected]:# echo 1 > /sys/kernel/debug/tracing/events/sched/sched_switch/enable 
[email protected]:# echo 1 > /sys/kernel/debug/tracing/tracing_on 
[email protected]:# cat /sys/kernel/debug/tracing/trace > mytracefile.txt 
[email protected]:# echo 0 > /sys/kernel/debug/tracing/tracing_on 
[email protected]:# echo 0 > /sys/kernel/debug/tracing/events/sched/sched_switch/enable 

公式ドキュメントで: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/trace/ftrace.txt

# cat trace 
# tracer: nop 
# 
# entries-in-buffer/entries-written: 77/77 #P:8 
# 
#        _-----=> irqs-off 
#       /_----=> need-resched 
#       |/_---=> hardirq/softirq 
#       ||/_--=> preempt-depth 
#       |||/ delay 
#   TASK-PID CPU# |||| TIMESTAMP FUNCTION 
#    | |  | ||||  |   | 
      <idle>-0  [007] d... 2440.707395: sched_switch: prev_comm=swapper/7 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=snapshot-test-2 next_pid=2243 next_prio=120 
snapshot-test-2-2229 [002] d... 2440.707438: sched_switch: prev_comm=snapshot-test-2 prev_pid=2229 prev_prio=120 prev_state=S ==> next_comm=swapper/2 next_pid=0 next_prio=120 
[...] 

よろしく、

0

大投稿ですが、MOUNTに忘れないでください

:デバッグファイルシステムは、

"mount -t debugfs none /sys/kernel/debug" or 
"mount -o rw,remount -t debugfs none /sys/kernel/debug" 

は、そうでなければ、

"そのような ファイルまたはディレクトリをエラーオープニング/ SYS /カーネル/デバッグ/トレース/オプション/上書きしない" のようなものを得ることはありません

ここにいくつかのより便利な情報http://rahulonblog.blogspot.se/2013/06/how-to-enable-debugfs-in-kernel.html

atrace実行しています
関連する問題