title: Android Systrace Trace File Format
body: <p>Android <strong>systrace</strong> tool, calls <strong>atrace</strong> tool via ADB. However, I don't understand very well the format of the traces file. Apparently it is very similar to linux <strong>ftrace</strong> tool with some differences. The main difference is that is doesn't uses a <strong>System.Map</strong> file but it includes all that information into the trace file. Also, there are new B|E entries that are android specific.</p>
  
  <p>There is some information about this format in Android Source Code at: <a href="http://androidxref.com/4.1.1/xref/external/chromium-trace/src/tracing/linux_perf_importer.js" rel="noreferrer">http://androidxref.com/4.1.1/xref/external/chromium-trace/src/tracing/linux_perf_importer.js</a></p>
  
  <p>However, in that documentation we can read that the format belongs to Linux <strong>Perf</strong> Tool. I don't think so, linux perf gives as an output a very different format... (unless some special configuration is active...)</p>
  
  <p>My question is: Does anybody know where can I found an official documentation about android trace files generated with <strong>atrace</strong> tool from adb?</p>
  
  <p>Is this format familiar to you ?</p>
  
  <pre><code># tracer: nop
  #
  # entries-in-buffer/entries-written: 66427/66427   #P:2
  #
  #                              _-----=&gt; irqs-off
  #                             / _----=&gt; need-resched
  #                            | / _---=&gt; hardirq/softirq
  #                            || / _--=&gt; 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 ==&gt; next_comm=swapper/0 next_pid=0 next_prio=120
            &lt;idle&gt;-0     [000] d.h7 14186.690000: sched_wakeup: comm=tfm_b6bcf800 pid=1714 prio=35 success=1 target_cpu=000
            &lt;idle&gt;-0     [000] d..3 14186.690000: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==&gt; 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 ==&gt; next_comm=swapper/0 next_pid=0 next_prio=120
            &lt;idle&gt;-0     [001] d.h3 14186.690000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001
            &lt;idle&gt;-0     [001] d..3 14186.690000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==&gt; 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 ==&gt; next_comm=swapper/1 next_pid=0 next_prio=120
            &lt;idle&gt;-0     [001] d.h3 14186.690000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001
            &lt;idle&gt;-0     [001] d..3 14186.690000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==&gt; 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 ==&gt; next_comm=swapper/1 next_pid=0 next_prio=120
            &lt;idle&gt;-0     [001] d.h3 14186.700000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001
            &lt;idle&gt;-0     [001] d..3 14186.700000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==&gt; 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 ==&gt; 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 ==&gt; next_comm=surfaceflinger next_pid=96 next_prio=120
  </code></pre>
  
  <p>Thanks in advance !</p>