lkml.org 
[lkml]   [2008]   [Oct]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 0/4] ftrace: add userspace stacktrace support and semaphore-latency tracer
    Date
    Hi,

    This patch series is a draft implementation of a semaphore-latency tracer.
    I would appreciate feedback on these patches so that they can be merged into
    mainline.

    The patches apply on top of tip/master (commit aaf9631d60b82182c7e9890b5ffec70f38131a50).

    The first two patches add userspace stacktrace support.
    Unfortunately if the userspace application (actually libc) is compiled without framepointers
    on x86-64, the userspace trace will contain only 1 entry: the return address.
    You can either request raw IP addresses in the trace, or ask for them to be
    resolved to object file + relative address, then a tool such as addr2line can be
    used to get file:line information.
    This is currently x86-only, but other architectures could implement it.

    TODO: It would be worth investigating if we could avoid code duplication vs. oprofile,
    and use a common function for userspace traces, and convert oprofile to it.

    The last 2 patches add a new tracer (and is independent of the first 2 patches).
    This tracer attempts to help in tracking rwsem latency issues.
    Each latency instance gets an ID, and a userspace program can be used to group
    the stacktraces by latency ID, thus obtaining a list of all tasks involved
    in a latency: the task(s) that was (were) holding the semaphore, and the tasks
    that had to wait due to this.

    See the patches themselves for more detail on how to use them.

    Shortlog below:

    Török Edwin (4):
    Add support for userspace stacktraces in tracing/iter_ctrl
    Identify which executable object the userspace address belongs to.
    add tracepoints in rwsem
    Implement semaphore latency tracer

    Documentation/ftrace.txt | 5 +-
    arch/x86/kernel/stacktrace.c | 57 +++++++++++++
    include/linux/stacktrace.h | 8 ++
    include/trace/rwsem.h | 35 ++++++++
    kernel/trace/Kconfig | 12 +++
    kernel/trace/Makefile | 1 +
    kernel/trace/trace.c | 188 ++++++++++++++++++++++++++++++++++++++++++
    kernel/trace/trace.h | 35 ++++++++
    kernel/trace/trace_semlat.c | 186 +++++++++++++++++++++++++++++++++++++++++
    lib/rwsem-spinlock.c | 16 ++--
    lib/rwsem.c | 13 +--
    11 files changed, 539 insertions(+), 17 deletions(-)
    create mode 100644 include/trace/rwsem.h
    create mode 100644 kernel/trace/trace_semlat.c

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2008-10-12 15:15    [W:4.443 / U:1.420 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site