lkml.org 
[lkml]   [2016]   [Nov]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] perf sched timehist: Enlarge max stack depth by 2
    Commit-ID:  8388deb3ba4d36ffcae91a2a01cb2ea6f27553e6
    Gitweb: http://git.kernel.org/tip/8388deb3ba4d36ffcae91a2a01cb2ea6f27553e6
    Author: Namhyung Kim <namhyung@kernel.org>
    AuthorDate: Thu, 24 Nov 2016 10:11:14 +0900
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Fri, 25 Nov 2016 10:50:57 -0300

    perf sched timehist: Enlarge max stack depth by 2

    When it records callchains, they will always have 2 scheduler functions
    (__schedule + schedule or __schedule + preempt_schedule) and get
    ignored. So it should collect 2 more functions to show the expected
    number of callchains to user.

    Committer Notes:

    Example of final result, using the same perf.data file as in the
    previous cset comment, but this time redirecting the output of 'perf
    sched timehist' to a file instead of copy'n'pasting from xterm:

    [root@jouet experimental]# perf sched timehist > /tmp/bla
    [root@jouet experimental]# cat /tmp/bla
    time cpu task name wait time sch delay run time
    [tid/pid] (msec) (msec) (msec)
    -------- ---- -------------------- ------ ------ -----
    6.494998 [01] <idle> 0.000 0.000 0.000
    6.495027 [02] perf[519] 0.000 0.000 0.000 schedule_hrtimeout_range_clock <- schedule_hrtimeout_range <- poll_schedule_timeout <- do_sys_poll <- sys_poll
    6.495096 [03] <idle> 0.000 0.000 0.000
    6.495100 [03] rcuos/0[9] 0.000 0.005 0.003 rcu_nocb_kthread <- kthread <- ret_from_fork
    6.495113 [01] perf[520] 0.000 0.008 0.114 preempt_schedule_common <- _cond_resched <- wait_for_completion <- stop_one_cpu <- sched_exec <- do_execveat_common.isra.35
    6.495121 [00] <idle> 0.000 0.000 0.000
    6.495129 [01] migration/1[17] 0.000 0.003 0.016 smpboot_thread_fn <- kthread <- ret_from_fork
    6.496085 [02] <idle> 0.000 0.000 1.057
    6.496096 [02] kworker/u16:1[31169] 0.000 0.004 0.011 worker_thread <- kthread <- ret_from_fork
    6.496096 [03] <idle> 0.003 0.000 0.996
    6.496169 [02] <idle> 0.011 0.000 0.072
    6.496171 [00] ls[520] 0.008 0.000 1.049 do_exit <- do_group_exit <- [unknown] <- entry_SYSCALL_64_fastpath
    6.496172 [03] gnome-terminal-[4391] 0.000 0.003 0.076 schedule_hrtimeout_range_clock <- schedule_hrtimeout_range <- poll_schedule_timeout <- do_sys_poll <- sys_poll

    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/r/20161124011114.7102-3-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/builtin-sched.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
    index 06be809..a49a032 100644
    --- a/tools/perf/builtin-sched.c
    +++ b/tools/perf/builtin-sched.c
    @@ -1960,7 +1960,7 @@ static bool is_idle_sample(struct perf_sched *sched,
    return false;

    if (thread__resolve_callchain(thread, cursor, evsel, sample,
    - NULL, NULL, sched->max_stack) != 0) {
    + NULL, NULL, sched->max_stack + 2) != 0) {
    if (verbose)
    error("Failed to resolve callchain. Skipping\n");

    \
     
     \ /
      Last update: 2016-11-25 18:44    [W:2.976 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site