Skip to content
  • Jiri Olsa's avatar
    edbe9817
    perf data: Add perf data to CTF conversion support · edbe9817
    Jiri Olsa authored
    Adding 'perf data convert' to convert perf data file into different
    format. This patch adds support for CTF format conversion.
    
    To convert perf.data into CTF run:
      $ perf data convert --to-ctf=./ctf-data/
      [ perf data convert: Converted 'perf.data' into CTF data './ctf-data/' ]
      [ perf data convert: Converted and wrote 11.268 MB (100230 samples) ]
    
    The command will create CTF metadata out of perf.data file (or one
    specified via -i option) and then convert all sample events into single
    CTF stream.
    
    Each sample_type bit is translated into separated CTF event field apart
    from following exceptions:
    
      PERF_SAMPLE_RAW          - added in next patch
      PERF_SAMPLE_READ         - TODO
      PERF_SAMPLE_CALLCHAIN    - TODO
      PERF_SAMPLE_BRANCH_STACK - TODO
      PERF_SAMPLE_REGS_USER    - TODO
      PERF_SAMPLE_STACK_USER   - TODO
    
      $ perf --debug=data-convert=2 data convert ...
    
    The converted CTF data could be analyzed by CTF tools, like babletrace
    or tracecompass [1].
    
      $ babeltrace ./ctf-data/
      [03:19:13.962125533] (+?.?????????) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 1 }
      [03:19:13.962130001] (+0.000004468) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 1 }
      [03:19:13.962131936] (+0.000001935) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 8 }
      [03:19:13.962133732] (+0.000001796) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 114 }
      [03:19:13.962135557] (+0.000001825) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 2087 }
      [03:19:13.962137627] (+0.000002070) cycles: { }, { ip = 0xFFFFFFFF81361938, tid = 20714, pid = 20714, period = 37582 }
      [03:19:13.962161091] (+0.000023464) cycles: { }, { ip = 0xFFFFFFFF8124218F, tid = 20714, pid = 20714, period = 600246 }
      [03:19:13.962517569] (+0.000356478) cycles: { }, { ip = 0xFFFFFFFF811A75DB, tid = 20714, pid = 20714, period = 1325731 }
      [03:19:13.969518008] (+0.007000439) cycles: { }, { ip = 0x34080917B2, tid = 20714, pid = 20714, period = 1144298 }
    
    The following members to the ctf-environment were decided to be added to
    distinguish and specify perf CTF data:
    
      - domain
    
        It says "kernel" because it contains a kernel trace (not to be
        confused with a user space like lttng-ust does)
    
      - tracer_name
    
        It says perf. This can be used to distinguish between lttng and perf
        CTF based trace.
    
      - version
    
        The kernel version from stream. In addition to release, this is what
        it looks like on a Debian kernel:
    
          release = "3.14-1-amd64";
          version = "3.14.0";
    
    [1] http://projects.eclipse.org/projects/tools.tracecompass
    
    
    
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Reviewed-by: default avatarDavid Ahern <dsahern@gmail.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Jeremie Galarneau <jgalar@efficios.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Tom Zanussi <tzanussi@gmail.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1424470628-5969-4-git-send-email-jolsa@kernel.org
    
    
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    edbe9817
    perf data: Add perf data to CTF conversion support
    Jiri Olsa authored
    Adding 'perf data convert' to convert perf data file into different
    format. This patch adds support for CTF format conversion.
    
    To convert perf.data into CTF run:
      $ perf data convert --to-ctf=./ctf-data/
      [ perf data convert: Converted 'perf.data' into CTF data './ctf-data/' ]
      [ perf data convert: Converted and wrote 11.268 MB (100230 samples) ]
    
    The command will create CTF metadata out of perf.data file (or one
    specified via -i option) and then convert all sample events into single
    CTF stream.
    
    Each sample_type bit is translated into separated CTF event field apart
    from following exceptions:
    
      PERF_SAMPLE_RAW          - added in next patch
      PERF_SAMPLE_READ         - TODO
      PERF_SAMPLE_CALLCHAIN    - TODO
      PERF_SAMPLE_BRANCH_STACK - TODO
      PERF_SAMPLE_REGS_USER    - TODO
      PERF_SAMPLE_STACK_USER   - TODO
    
      $ perf --debug=data-convert=2 data convert ...
    
    The converted CTF data could be analyzed by CTF tools, like babletrace
    or tracecompass [1].
    
      $ babeltrace ./ctf-data/
      [03:19:13.962125533] (+?.?????????) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 1 }
      [03:19:13.962130001] (+0.000004468) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 1 }
      [03:19:13.962131936] (+0.000001935) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 8 }
      [03:19:13.962133732] (+0.000001796) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 114 }
      [03:19:13.962135557] (+0.000001825) cycles: { }, { ip = 0xFFFFFFFF8105443A, tid = 20714, pid = 20714, period = 2087 }
      [03:19:13.962137627] (+0.000002070) cycles: { }, { ip = 0xFFFFFFFF81361938, tid = 20714, pid = 20714, period = 37582 }
      [03:19:13.962161091] (+0.000023464) cycles: { }, { ip = 0xFFFFFFFF8124218F, tid = 20714, pid = 20714, period = 600246 }
      [03:19:13.962517569] (+0.000356478) cycles: { }, { ip = 0xFFFFFFFF811A75DB, tid = 20714, pid = 20714, period = 1325731 }
      [03:19:13.969518008] (+0.007000439) cycles: { }, { ip = 0x34080917B2, tid = 20714, pid = 20714, period = 1144298 }
    
    The following members to the ctf-environment were decided to be added to
    distinguish and specify perf CTF data:
    
      - domain
    
        It says "kernel" because it contains a kernel trace (not to be
        confused with a user space like lttng-ust does)
    
      - tracer_name
    
        It says perf. This can be used to distinguish between lttng and perf
        CTF based trace.
    
      - version
    
        The kernel version from stream. In addition to release, this is what
        it looks like on a Debian kernel:
    
          release = "3.14-1-amd64";
          version = "3.14.0";
    
    [1] http://projects.eclipse.org/projects/tools.tracecompass
    
    
    
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Reviewed-by: default avatarDavid Ahern <dsahern@gmail.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Jeremie Galarneau <jgalar@efficios.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Tom Zanussi <tzanussi@gmail.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1424470628-5969-4-git-send-email-jolsa@kernel.org
    
    
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Loading