Re: [PATCH 2/2] perf lock: Fix output of tracing lock events

From: Hitoshi Mitake
Date: Thu Jan 07 2010 - 05:39:36 EST


On 2009å12æ31æ 22:24, Hitoshi Mitake wrote:
On Mon, Dec 28, 2009 at 19:01, Peter Zijlstra<peterz@xxxxxxxxxxxxx> wrote:
On Sat, 2009-12-26 at 22:43 +0900, Hitoshi Mitake wrote:

As to removing the waittime, I'm not sure, in this case, yes, but if you
want some other processing that hooks straight into the tracepoints
instead of using a logging structure, it might be useful.

Removing that do_div() from there and exposing waittime as u64 in nsec,
for sure, that do_div() is just silly.




I was too egoist. perf lock is not an only one user of lock events.

And I have a suggestion. Adding name of source files and lines of
lock instances may be good thing for human's readability.
How do you think?

file:line might be interesting indeed, but I worry about the size of the
event entry.. But lets see how that goes.

Why do we need to have instance resolution?

You forgot to answer this question.

Is it purely because the waittime computation as done by lockstat is not
good enough for you -- should we not fix that instead, that'd benefit
more people.




Ah, sorry, let me answer to the question.

Yes, I need instance resolution. Name is not enough thing.
Because there are locks which use name which is used by other locks.
For example, at least 5 lock instances use the name "port_lock".

This is copied from output of cscope.

*** drivers/infiniband/core/user_mad.c:
<global>[138] static DEFINE_SPINLOCK(port_lock);

*** drivers/net/ehea/ehea.h:
<global>[473] struct mutex port_lock;

*** drivers/pcmcia/i82092.c:
<global>[202] static DEFINE_SPINLOCK(port_lock);

*** drivers/pcmcia/pd6729.c:
<global>[69] static DEFINE_SPINLOCK(port_lock);

*** drivers/usb/gadget/u_serial.c:
<global>[94] spinlock_t port_lock;

port_lock of ehea.h and u_serial.c is a member of struct,
so number of instances with this name is more than 5.

So we cannot distinguish between each lock instances by their name.

And waittime caliculated by lockstat is valuable information,
but we can also use timestamp.
waittime is not equal to hold time, and every events have their timestamps.
I think exploiting information from timestamps
(which already be providec) is worthful.
--

Sorry, I felt that I misunderstood intention of your question.
If you told about /proc/lock_stat, yes, it is very useful information.
But this provides all information from system boot.

perf lock can provide lock statistics between two arbitrarily points.
This is valuable thing for analyzing behavior of specific applications.

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