lkml.org 
[lkml]   [2017]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v2 00/13] perf tool: add meta-data header support for pipe-mode
    Date
      v2: - Finer patch splitting.
    - Add only one record type with a feature id instead of one
    record per new feature (as suggested by Jiri).
    - Add perf.data documentation.

    (This is a rebased and updated version of Stephane Eranian's version
    in https://patchwork.kernel.org/patch/1499081/)

    Up until now, meta-data was only available when perf record
    was used in "regular" mode, i.e., generating a perf.data file.
    For users depending on pipe mode, neither host or event header
    information were gathered. This patch addresses this limitation.

    The difficulty in pipe mode is that information needs to be written
    sequentially to the pipe. Meta data headers are usually generated
    (and also expected) at the beginning of the file (or piped output).
    To solve this problem, we introduce new synthetic record types,
    one for each meta-data type. The approach is similar to what
    is *ALREADY* used for BUILD_ID and TRACING_DATA.

    We have modified util/header.c such that the same routines are used
    to generate and read the meta-data information regardless of pipe-mode
    vs. regular mode. To make this work, we added a new struct called
    feat_fd which encapsulates all the information necessary to read or
    write meta-data information to a file/pipe or from a file/pipe.

    With this series, it is possible to get:
    $ perf record -o - -e cycles sleep 1 | perf report --stdio --header
    # ========
    # captured on: Mon May 22 16:33:43 2017
    # ========
    #
    # hostname : my_hostname
    # os release : 4.11.0-dbx-up_perf
    # perf version : 4.11.rc6.g6277c80
    # arch : x86_64
    # nrcpus online : 72
    # nrcpus avail : 72
    # cpudesc : Intel(R) Xeon(R) CPU E5-2696 v3 @ 2.30GHz
    # cpuid : GenuineIntel,6,63,2
    # total memory : 263457192 kB
    # cmdline : /root/perf record -o - -e cycles -c 100000 sleep 1
    # HEADER_CPU_TOPOLOGY info available, use -I to display
    # HEADER_NUMA_TOPOLOGY info available, use -I to display
    # pmu mappings: intel_bts = 6, uncore_imc_4 = 22, uncore_sbox_1 = 47, uncore_cbox_5 = 33, uncore_ha_0 = 16, uncore_cbox
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.000 MB - ]
    ...

    Only patch 13/13 has a significant effect in perf's behavior. All other
    are transparent preparatory changes or bug fixes.

    David Carrillo-Cisneros (13):
    perf header: encapsulate read and swap
    perf header: add PROCESS_STR_FUN macro
    perf header: fail on write_padded error
    perf util: add const modifier to buf in "writen" function
    perf header: revamp do_write
    perf header: add struct feat_fd for write
    perf header: use struct feat_fd for print
    perf header: use struct feat_fd to process header records
    perf header: use struct feat_fd in read header records
    perf header: add a buffer to struct feat_fd
    perf header: change FEAT_OP* macros
    perf tool: add show_feature_header to perf_tool
    perf tools: add feature header record to pipe-mode

    tools/perf/Documentation/perf.data-file-format.txt | 10 +-
    tools/perf/builtin-annotate.c | 1 +
    tools/perf/builtin-inject.c | 1 +
    tools/perf/builtin-record.c | 7 +
    tools/perf/builtin-report.c | 12 +-
    tools/perf/builtin-script.c | 4 +
    tools/perf/util/build-id.c | 10 +-
    tools/perf/util/build-id.h | 4 +-
    tools/perf/util/event.c | 1 +
    tools/perf/util/event.h | 8 +
    tools/perf/util/header.c | 877 +++++++++++----------
    tools/perf/util/header.h | 16 +-
    tools/perf/util/session.c | 12 +
    tools/perf/util/tool.h | 10 +-
    tools/perf/util/util.c | 6 +-
    tools/perf/util/util.h | 2 +-
    16 files changed, 564 insertions(+), 417 deletions(-)

    --
    2.13.0.219.gdb65acc882-goog

    \
     
     \ /
      Last update: 2017-05-23 09:49    [W:4.073 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site