From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>,
Ingo Molnar <mingo@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Jiri Olsa <jolsa@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
Andi Kleen <andi@firstfloor.org>,
Minchan Kim <minchan@kernel.org>
Subject: Re: [PATCHSET 00/10] perf sched timehist: Introduce --idle-hist option (v1)
Date: Tue, 6 Dec 2016 16:44:27 -0300 [thread overview]
Message-ID: <20161206194427.GC8257@kernel.org> (raw)
In-Reply-To: <20161206034010.6499-1-namhyung@kernel.org>
Em Tue, Dec 06, 2016 at 12:40:00PM +0900, Namhyung Kim escreveu:
> Hi,
>
> This patchset implements the idle hist feature which analyze reason of system
> idle. Sometimes I need to investigate what makes CPUs to go idle even though
> I have jobs to do. It may be due to I/O, waiting on lock or whatever.
So, on a first round, I've applied the ones David acked, will try
pushing to Ingo today.
David, I still haven't myself reviewed the patches, before that, do you
have any strong objection to the other patches? Will you continue
reviewing them?
- Arnaldo
> To identify the reasons it only accounts events related to idle task. Also it
> shows callchains when entering to idle and time how long it's in the idle.
> Although it's not perfect, it works well to help finding the reasons.
>
> With --idle-hist option, only idle task's runtime is accounted to previous
> task (which makes the cpu go to idle). With --summary(-only) option, you can
> see the total idle stat by task or callchains.
>
> The example output looks like below:
>
> Idle-time summary
> comm parent sched-out idle-time min-idle avg-idle max-idle stddev migrations
> (count) (msec) (msec) (msec) (msec) %
> ---------------------------------------------------------------------------------------------------------------------
> rcu_preempt[7] 2 95 550.872 0.011 5.798 23.146 7.63 0
> migration/1[16] 2 1 15.558 15.558 15.558 15.558 0.00 0
> khugepaged[39] 2 1 3.062 3.062 3.062 3.062 0.00 0
> kworker/0:1H[124] 2 2 4.728 0.611 2.364 4.116 74.12 0
> systemd-journal[167] 1 1 4.510 4.510 4.510 4.510 0.00 0
> kworker/u16:3[558] 2 13 74.737 0.080 5.749 12.960 21.96 0
> irq/34-iwlwifi[628] 2 21 118.403 0.032 5.638 23.990 24.00 0
> kworker/u17:0[673] 2 1 3.523 3.523 3.523 3.523 0.00 0
> dbus-daemon[722] 1 1 6.743 6.743 6.743 6.743 0.00 0
> ifplugd[741] 1 1 58.826 58.826 58.826 58.826 0.00 0
> wpa_supplicant[1490] 1 1 13.302 13.302 13.302 13.302 0.00 0
> wpa_actiond[1492] 1 2 4.064 0.168 2.032 3.896 91.72 0
> dockerd[1500] 1 1 0.055 0.055 0.055 0.055 0.00 0
> dockerd[1516/1500] 1500 1 5.732 5.732 5.732 5.732 0.00 0
> dockerd[1571/1500] 1500 1 0.020 0.020 0.020 0.020 0.00 0
> ...
>
> Idle stats:
> CPU 0 idle for 902.195 msec
> CPU 1 idle for 899.932 msec
> CPU 2 idle for 941.218 msec
> CPU 3 idle for 822.453 msec
>
> Idle stats by callchain:
> CPU 0: 902.195 msec
> Idle time (msec) Count Callchains
> ---------------- -------- --------------------------------------------------
> 370.589 69 futex_wait_queue_me <- futex_wait <- do_futex <- sys_futex <- entry_SYSCALL_64_fastpath
> 178.799 17 worker_thread <- kthread <- ret_from_fork
> 128.352 17 schedule_timeout <- rcu_gp_kthread <- kthread <- ret_from_fork
> 125.111 19 schedule_hrtimeout_range_clock <- schedule_hrtimeout_range <- poll_schedule_timeout <- do_select <- core_sys_select
> 71.599 50 schedule_hrtimeout_range_clock <- schedule_hrtimeout_range <- poll_schedule_timeout <- do_sys_poll <- sys_poll
> 23.146 1 rcu_gp_kthread <- kthread <- ret_from_fork
> 4.510 1 schedule_hrtimeout_range_clock <- schedule_hrtimeout_range <- ep_poll <- sys_epoll_wait <- do_syscall_64
> 0.085 1 schedule_hrtimeout_range_clock <- schedule_hrtimeout_range <- poll_schedule_timeout <- do_sys_poll <- do_restart_poll
> ...
>
>
> The patch 1-5 are cleanup and preparations so they can be applied separately.
> The patch 6-10 implements the -I/--idle-hist option.
>
> The code is available at 'perf/timehist-idle-v1' branch in my tree:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git
>
> Any comments are welcome!
>
> Thanks,
> Namhyung
>
>
> Namhyung Kim (10):
> perf sched: Cleanup option processing
> perf tools: Introduce callchain_cursor__copy()
> perf sched timehist: Handle zero sample->tid properly
> perf sched timehist: Split is_idle_sample()
> perf sched timehist: Cleanup idle_max_cpu handling
> perf sched timehist: Introduce struct idle_time_data
> perf sched timehist: Save callchain when entering idle
> perf sched timehist: Skip non-idle events when necessary
> perf sched timehist: Add -I/--idle-hist option
> perf sched timehist: Show callchains for idle stat
>
> tools/perf/Documentation/perf-sched.txt | 4 +
> tools/perf/builtin-sched.c | 264 +++++++++++++++++++++++++++-----
> tools/perf/util/callchain.c | 27 ++++
> tools/perf/util/callchain.h | 3 +
> 4 files changed, 256 insertions(+), 42 deletions(-)
>
> --
> 2.10.1
next prev parent reply other threads:[~2016-12-06 19:44 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-06 3:40 [PATCHSET 00/10] perf sched timehist: Introduce --idle-hist option (v1) Namhyung Kim
2016-12-06 3:40 ` [PATCH 01/10] perf sched: Cleanup option processing Namhyung Kim
2016-12-06 3:58 ` David Ahern
2016-12-07 18:24 ` [tip:perf/core] " tip-bot for Namhyung Kim
2016-12-06 3:40 ` [PATCH 02/10] perf tools: Introduce callchain_cursor__copy() Namhyung Kim
2016-12-07 18:25 ` [tip:perf/core] perf callchain: " tip-bot for Namhyung Kim
2016-12-06 3:40 ` [PATCH 03/10] perf sched timehist: Handle zero sample->tid properly Namhyung Kim
2016-12-06 3:52 ` David Ahern
2016-12-06 3:59 ` Namhyung Kim
2016-12-06 4:01 ` David Ahern
2016-12-07 2:06 ` Namhyung Kim
2016-12-08 14:19 ` Namhyung Kim
2016-12-07 18:25 ` [tip:perf/core] " tip-bot for Namhyung Kim
2016-12-06 3:40 ` [PATCH 04/10] perf sched timehist: Split is_idle_sample() Namhyung Kim
2016-12-06 3:57 ` David Ahern
2016-12-07 1:26 ` Namhyung Kim
2016-12-06 3:40 ` [PATCH 05/10] perf sched timehist: Cleanup idle_max_cpu handling Namhyung Kim
2016-12-06 4:00 ` David Ahern
2016-12-07 18:26 ` [tip:perf/core] " tip-bot for Namhyung Kim
2016-12-06 3:40 ` [PATCH 06/10] perf sched timehist: Introduce struct idle_time_data Namhyung Kim
2016-12-06 4:07 ` David Ahern
2016-12-07 2:12 ` Namhyung Kim
2016-12-06 3:40 ` [PATCH 07/10] perf sched timehist: Save callchain when entering idle Namhyung Kim
2016-12-06 3:40 ` [PATCH 08/10] perf sched timehist: Skip non-idle events when necessary Namhyung Kim
2016-12-06 3:40 ` [PATCH 09/10] perf sched timehist: Add -I/--idle-hist option Namhyung Kim
2016-12-06 3:40 ` [PATCH 10/10] perf sched timehist: Show callchains for idle stat Namhyung Kim
2016-12-06 19:44 ` Arnaldo Carvalho de Melo [this message]
2016-12-06 21:31 ` [PATCHSET 00/10] perf sched timehist: Introduce --idle-hist option (v1) David Ahern
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161206194427.GC8257@kernel.org \
--to=acme@kernel.org \
--cc=andi@firstfloor.org \
--cc=dsahern@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=minchan@kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.