lkml.org 
[lkml]   [2016]   [Feb]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 48/48] perf tools: Don't warn about out of order event if write_backward is used
    Date
    If write_backward attribute is set, records are written into kernel
    ring buffer from end to beginning, but read from beginning to end.
    To avoid 'XX out of order events recorded' warning message (timestamps
    of records is in reverse order when using write_backward), suppress the
    warning message if write_backward is selected by at lease one event.

    Result:

    Before this patch:
    # perf record -m 1 -e raw_syscalls:sys_exit/overwrite/ \
    -e raw_syscalls:sys_enter \
    dd if=/dev/zero of=/dev/null count=300
    300+0 records in
    300+0 records out
    153600 bytes (154 kB) copied, 0.000601617 s, 255 MB/s
    [ perf record: Woken up 5 times to write data ]
    Warning:
    40 out of order events recorded.
    [ perf record: Captured and wrote 0.096 MB perf.data (696 samples) ]

    After this patch:
    # perf record -m 1 -e raw_syscalls:sys_exit/overwrite/ \
    -e raw_syscalls:sys_enter \
    dd if=/dev/zero of=/dev/null count=300
    300+0 records in
    300+0 records out
    153600 bytes (154 kB) copied, 0.000644873 s, 238 MB/s
    [ perf record: Woken up 5 times to write data ]
    [ perf record: Captured and wrote 0.096 MB perf.data (696 samples) ]

    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Signed-off-by: He Kuang <hekuang@huawei.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Zefan Li <lizefan@huawei.com>
    Cc: pi3orama@163.com
    ---
    tools/perf/util/session.c | 22 +++++++++++++++++++---
    1 file changed, 19 insertions(+), 3 deletions(-)

    diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
    index 40b7a0d..132c6ab 100644
    --- a/tools/perf/util/session.c
    +++ b/tools/perf/util/session.c
    @@ -1516,10 +1516,27 @@ int perf_session__register_idle_thread(struct perf_session *session)
    return err;
    }

    +static void
    +perf_session__warn_order(const struct perf_session *session)
    +{
    + const struct ordered_events *oe = &session->ordered_events;
    + struct perf_evsel *evsel;
    + bool should_warn = true;
    +
    + evlist__for_each(session->evlist, evsel) {
    + if (evsel->attr.write_backward)
    + should_warn = false;
    + }
    +
    + if (!should_warn)
    + return;
    + if (oe->nr_unordered_events != 0)
    + ui__warning("%u out of order events recorded.\n", oe->nr_unordered_events);
    +}
    +
    static void perf_session__warn_about_errors(const struct perf_session *session)
    {
    const struct events_stats *stats = &session->evlist->stats;
    - const struct ordered_events *oe = &session->ordered_events;

    if (session->tool->lost == perf_event__process_lost &&
    stats->nr_events[PERF_RECORD_LOST] != 0) {
    @@ -1576,8 +1593,7 @@ static void perf_session__warn_about_errors(const struct perf_session *session)
    stats->nr_unprocessable_samples);
    }

    - if (oe->nr_unordered_events != 0)
    - ui__warning("%u out of order events recorded.\n", oe->nr_unordered_events);
    + perf_session__warn_order(session);

    events_stats__auxtrace_error_warn(stats);

    --
    1.8.3.4
    \
     
     \ /
      Last update: 2016-02-22 11:21    [W:4.162 / U:0.276 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site