public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] perf: Teach perf tool to profile sleep times (v2)
@ 2012-08-07 12:56 Andrew Vagin
  2012-08-07 12:56 ` [PATCH 1/4] perf: teach "perf inject" to work with files (v2) Andrew Vagin
                   ` (5 more replies)
  0 siblings, 6 replies; 22+ messages in thread
From: Andrew Vagin @ 2012-08-07 12:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: Peter Zijlstra, Paul Mackerras, Ingo Molnar,
	Arnaldo Carvalho de Melo

This functionality helps to analize where a task sleeps or waits locks.
This feature can help to investigate a scalability problems.

The main idea is that we can combine sched_switch and sched_stat_sleep events.
sched_switch contains a callchain, when a task starts sleeping.
sched_stat_sleep contains a time period for which a task slept.

This series teaches "perf inject" to combine this events.

All kernel related patches were committed committed in 3.6-rc1.

Here is an example of a report:
$ cat ~/foo.c
....
          for (i = 0; i <  10; i++) {
                  ts1.tv_sec = 0;
                  ts1.tv_nsec = 10000000;
                  nanosleep(&ts1, NULL);

                  tv1.tv_sec = 0;
                  tv1.tv_usec = 40000;
                  select(0, NULL, NULL, NULL,&tv1);
          }
...

$ ./perf record -e sched:sched_stat_sleep -e sched:sched_switch \
		-e sched:sched_process_exit -gP -o ~/perf.data.raw ~/foo
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.015 MB /root/perf.data.raw (~661 samples) ]
$ ./perf inject -v -s -i ~/perf.data.raw -o ~/perf.data
$ ./perf report -i ~/perf.data
# Samples: 40  of event 'sched:sched_switch'
# Event count (approx.): 1005527702
#
# Overhead  Command      Shared Object          Symbol
# ........  .......  .................  ..............
#
   100.00%      foo  [kernel.kallsyms]  [k] __schedule
                |
                --- __schedule
                    schedule
                   |          
                   |--79.81%-- schedule_hrtimeout_range_clock
                   |          schedule_hrtimeout_range
                   |          poll_schedule_timeout
                   |          do_select
                   |          core_sys_select
                   |          sys_select
                   |          system_call_fastpath
                   |          __select
                   |          __libc_start_main
                   |          
                    --20.19%-- do_nanosleep
                              hrtimer_nanosleep
                              sys_nanosleep
                              system_call_fastpath
                              __GI___libc_nanosleep
                              __libc_start_main

Andrew Vagin (3):
  perf: teach "perf inject" to work with files
  perf: teach perf inject to merge sched_stat_* and sched_switch events
  perf: mark a dso if it's used

 tools/perf/builtin-inject.c |  139 ++++++++++++++++++++++++++++++++++++++++---
 tools/perf/util/build-id.c  |    2 +-
 tools/perf/util/build-id.h  |    5 ++
 3 files changed, 137 insertions(+), 9 deletions(-)


^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2012-10-26 15:11 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-07 12:56 [PATCH 0/4] perf: Teach perf tool to profile sleep times (v2) Andrew Vagin
2012-08-07 12:56 ` [PATCH 1/4] perf: teach "perf inject" to work with files (v2) Andrew Vagin
2012-10-26 15:09   ` [tip:perf/core] perf inject: Work with files tip-bot for Andrew Vagin
2012-08-07 12:56 ` [PATCH 2/4] perf: synthesize_sample gets evsel instead of session Andrew Vagin
2012-08-07 12:56 ` [PATCH 3/4] perf: teach perf inject to merge sched_stat_* and sched_switch events (v2) Andrew Vagin
2012-08-25 11:47   ` Frederic Weisbecker
2012-08-27  7:22     ` Andrey Wagin
2012-08-27 20:51   ` Andi Kleen
2012-08-27 21:56     ` David Ahern
2012-08-27 22:14       ` Andi Kleen
2012-08-29  8:27     ` Andrew Vagin
2012-10-26 15:10   ` [tip:perf/core] perf inject: Merge sched_stat_* and sched_switch events tip-bot for Andrew Vagin
2012-08-07 12:56 ` [PATCH 4/4] perf: mark a dso if it's used Andrew Vagin
2012-10-26 15:11   ` [tip:perf/core] perf inject: Mark " tip-bot for Andrew Vagin
2012-08-08  0:32 ` [PATCH 0/4] perf: Teach perf tool to profile sleep times (v2) Namhyung Kim
2012-08-08  5:02   ` Andrey Wagin
2012-08-08  5:30     ` Namhyung Kim
2012-08-08  7:24       ` Andrey Wagin
2012-08-09  0:37         ` Namhyung Kim
2012-08-09 12:56           ` Andrey Wagin
2012-08-24 13:32 ` Andrey Wagin
2012-08-24 17:59   ` Arnaldo Carvalho de Melo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox