lkml.org 
[lkml]   [2012]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH 0/4] perf: Teach perf tool to profile sleep times (v2)
    Date
    Hi, Andrew

    On Tue, 7 Aug 2012 16:56:01 +0400, Andrew Vagin wrote:
    > This functionality helps to analize where a task sleeps or waits locks.
    > This feature can help to investigate a scalability problems.
    >
    Looks like a nice feature.


    > 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

    The usage like this is too specific and hard to use IMHO. How about
    putting it somehow into perf sched or new command?

    /me don't have an idea though. :-)


    > # 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
    >

    Seems to be outdated.

    Thanks,
    Namhyung


    > 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(-)


    \
     
     \ /
      Last update: 2012-08-08 03:21    [W:0.140 / U:0.684 seconds]
    ©2003-2014 Jasper Spaans. Advertise on this site