From: Frederic Weisbecker <fweisbec@gmail.com>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>,
zhaolei@cn.fujitsu.com, kosaki.motohiro@jp.fujitsu.com,
rostedt@goodmis.org, tzanussi@gmail.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/4] workqueue_tracepoint: Add worklet tracepoints for worklet lifecycle tracing
Date: Tue, 28 Apr 2009 15:42:11 +0200 [thread overview]
Message-ID: <20090428134209.GA5978@nowhere> (raw)
In-Reply-To: <20090427150241.GA23700@redhat.com>
On Mon, Apr 27, 2009 at 05:02:41PM +0200, Oleg Nesterov wrote:
> On 04/26, Andrew Morton wrote:
> >
> > Most workqueue work lately has come from Oleg. I'm unaware that he has
> > expressed an interest in this feature? Oleg, would it have been useful
> > in any of the work you've done?
>
> Well. Probably not. But I don't think this matters. Other people (and
> not only kernel developers) can find this useful.
>
> I _think_ that if you are going to hack workqueue.c itself, it is
> more easy to just add some printks, may be I am wrong. But, probably
> tracepoints can help to write/debug, say, device drivers. Or admins
> can use debugfs to see whats going on, or to provide more info for
> the bugreports.
>
> I try to avoid "do we need this feauture" discussions as much as
> possible. Because I never know. My usage of kernel is very, very
> limited, I never do something "interesting" on my machine. This reminds
> me the discussion about the ability to trace /sbin/init. Some developers
> were unhappy with the trivial patch I sent. They said it is trivial
> to change your kernel if you need this. But no, it was not trivial
> to me when I was admin. So, I just can't judge.
>
> > > And the thing is, the workqueue code has been pretty problematic
> > > lately - with lockups and other regressions.
>
> Hmm. Perhaps I missed some bug-reports... But I don't remember any
> recent problems with workueues except the "usual" bugs like "flush
> shares the lock with work->func".
>
>
> As for the patches, I can't review them now. They are on top of
> some other changes which I didn't see (or perhaps I lost the patches
> I was cc'ed? sorry in this case).
I'm currently gathering Zhaolei patches and I will push them all in
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git
tracing/workqueue
Once it's done, I will also push the fixes that address some of your
comments from your last review.
> But at least the change in workqueue.c looks very simple, and do
> not complicate the code for readers. And, if we add any tracing
> to workqueues, then it is very natural to add entry/exit handlers.
>
>
> I must admit, I don't really understand why trace_workqueue.c uses
> cwq->thread as a "primary key". I have the feeling we can simplify
> this code if we pass "struct workqueue_struct *" instead, but I am
> not sure.
Indeed, I wanted to use it as the identifier first. The problem
is that this structure is privately defined inside kernel/workqueue.c
And because struct cpu_workqueue * and struct cpu_workqueue::thread
is a 1:1 relation, I've used the thread as the real identifier, so
that I can access the thread_comm and other things.
But actually it's not really a 1:1 matching in CONFIG_HOTPLUG_CPU
case, because the thread can destroyed and the cpu_workqueue assigned
with a new one later.
I managed it by also destroying the workqueue in that case on the stat.
> In particular, trace_workqueue_flush(cwq->thread) looks a bit strange
> to me. I can't imagine how it can be useful per-thread and without
> trace_workqueue_flush_end() or something. I mean, if we need to trace
> flushes, then imho it makes much more sense to add flush_start/flush_end
> handlers into flush_workqueue().
True. The flush would make more sense if it's embraced with a begin/end.
The result would be:
wq_name flush_begin
cpu_workqueue1
worklet1 exec
worklet2 exec
cpu_workqueue2
worklet3 exec
worklet4 exec
...
wq_name flush_end
So that we can more easily eye-parse this section and have the
execution time of the whole wait for completion.
> Oleg.
>
next prev parent reply other threads:[~2009-04-28 13:42 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-13 0:53 [PATCH 0/1] tracing, workqueuetrace: Make workqueue tracepoints use TRACE_EVENT macro Zhaolei
2009-04-13 0:54 ` [PATCH 1/1] " Zhaolei
2009-04-13 1:44 ` KOSAKI Motohiro
2009-04-13 3:25 ` KOSAKI Motohiro
2009-04-13 3:49 ` Zhaolei
2009-04-13 3:57 ` Ingo Molnar
2009-04-13 4:07 ` Re: [PATCH 1/1] tracing, workqueuetrace: Make workqueuetracepoints " Zhaolei
2009-04-13 3:57 ` [PATCH 1/1] tracing, workqueuetrace: Make workqueue tracepoints " KOSAKI Motohiro
2009-04-13 5:52 ` [PATCH v2 1/4] ftrace, " KOSAKI Motohiro
2009-04-13 5:53 ` [PATCH v2 2/4] ftrace: introduce workqueue_handler_exit tracepoint and rename workqueue_execution to workqueue_handler_entry KOSAKI Motohiro
2009-04-13 16:25 ` Frederic Weisbecker
2009-04-15 10:22 ` Oleg Nesterov
2009-04-15 11:09 ` Ingo Molnar
2009-04-15 11:33 ` Oleg Nesterov
2009-04-15 11:45 ` Ingo Molnar
2009-04-15 12:05 ` Oleg Nesterov
2009-04-13 5:53 ` [PATCH v2 3/4] ftrace: add max execution time mesurement to workqueue tracer KOSAKI Motohiro
2009-04-13 16:16 ` Frederic Weisbecker
2009-04-13 21:21 ` Ingo Molnar
2009-04-14 1:43 ` KOSAKI Motohiro
2009-04-14 11:40 ` Frederic Weisbecker
2009-04-15 0:31 ` KOSAKI Motohiro
2009-04-13 5:55 ` [PATCH v2 4/4] ftrace: add latecy mesurement feature " KOSAKI Motohiro
2009-04-14 2:50 ` KOSAKI Motohiro
2009-04-13 15:24 ` [PATCH v2 1/4] ftrace, workqueuetrace: Make workqueue tracepoints use TRACE_EVENT macro Frederic Weisbecker
2009-04-14 4:03 ` [PATCH v2 5/4] ftrace, workqueuetrace: display work name KOSAKI Motohiro
2009-04-14 21:16 ` Frederic Weisbecker
2009-04-14 23:55 ` KOSAKI Motohiro
2009-04-15 1:15 ` Frederic Weisbecker
2009-04-15 6:13 ` KOSAKI Motohiro
2009-04-15 6:17 ` Zhaolei
2009-04-15 9:44 ` Ingo Molnar
2009-04-15 16:23 ` Frederic Weisbecker
2009-04-17 6:56 ` [PATCH v3 0/1] ftrace, workqueuetrace: Make workqueue tracepoints use TRACE_EVENT macro Zhaolei
2009-04-17 7:15 ` [PATCH v3 1/1] " Zhaolei
2009-04-17 13:45 ` Ingo Molnar
2009-04-20 1:30 ` [PATCH v3 1/1] ftrace, workqueuetrace: Make workqueuetracepoints " Zhaolei
2009-04-20 1:38 ` KOSAKI Motohiro
2009-04-20 1:43 ` Zhaolei
2009-04-20 1:49 ` KOSAKI Motohiro
2009-04-20 8:46 ` Ingo Molnar
2009-04-20 22:25 ` Oleg Nesterov
2009-04-20 23:48 ` Frederic Weisbecker
2009-04-21 15:28 ` Oleg Nesterov
2009-04-21 15:50 ` Oleg Nesterov
2009-04-21 18:33 ` Frederic Weisbecker
2009-04-21 18:28 ` Frederic Weisbecker
2009-04-21 19:37 ` Oleg Nesterov
2009-04-24 11:42 ` [PATCH 0/4] workqueue_tracepoint: Add worklet tracepoints for worklet lifecycle tracing Zhaolei
2009-04-24 11:43 ` [PATCH 1/4] workqueue_tracepoint: introduce workqueue_handler_exit tracepoint and rename workqueue_execution to workqueue_handler_entry Zhaolei
2009-04-24 11:45 ` [PATCH 2/4] workqueue_tracepoint: Add workqueue_flush and worklet_cancel tracepoint Zhaolei
2009-04-24 11:45 ` [PATCH 3/4] workqueue_tracepoint: Change tracepoint name to fit worklet and workqueue lifecycle Zhaolei
2009-04-24 11:46 ` [PATCH 4/4] workqueue_trace: Separate worklet_insertion into worklet_enqueue and worklet_enqueue_delayed Zhaolei
2009-04-24 20:06 ` [PATCH 0/4] workqueue_tracepoint: Add worklet tracepoints for worklet lifecycle tracing Andrew Morton
2009-04-24 22:59 ` Frederic Weisbecker
2009-04-24 23:20 ` Andrew Morton
2009-04-25 0:37 ` Frederic Weisbecker
2009-04-25 1:28 ` Andrew Morton
2009-04-25 2:00 ` Steven Rostedt
2009-04-25 2:24 ` Andrew Morton
2009-04-25 2:51 ` Steven Rostedt
2009-04-25 3:10 ` Andrew Morton
2009-04-25 3:32 ` Steven Rostedt
2009-04-26 10:47 ` Ingo Molnar
2009-04-27 5:44 ` Andrew Morton
2009-04-27 15:02 ` Oleg Nesterov
2009-04-27 15:43 ` Ingo Molnar
2009-04-27 19:09 ` Oleg Nesterov
2009-04-28 13:42 ` Frederic Weisbecker [this message]
2009-04-28 16:43 ` Oleg Nesterov
2009-04-28 17:49 ` Frederic Weisbecker
2009-04-24 23:27 ` Frederic Weisbecker
2009-04-28 17:24 ` Frank Ch. Eigler
2009-04-28 18:48 ` Andrew Morton
2009-04-28 20:51 ` Frank Ch. Eigler
2009-04-29 4:03 ` KOSAKI Motohiro
2009-04-29 4:29 ` Andrew Morton
2009-04-29 5:21 ` KOSAKI Motohiro
2009-04-20 17:11 ` [PATCH v3 1/1] ftrace, workqueuetrace: Make workqueue tracepoints use TRACE_EVENT macro Frederic Weisbecker
2009-04-21 1:20 ` KOSAKI Motohiro
2009-04-20 6:42 ` [PATCH 0/4] ftrace, workqueuetrace: Add worklet informationame Zhaolei
2009-04-20 6:58 ` [PATCH 1/4] trace_workqueue: use list_for_each_entry() instead of list_for_each_entry_safe() Zhaolei
2009-04-20 7:26 ` Frederic Weisbecker
2009-04-20 6:59 ` [PATCH 2/4] trace_workqueue: Remove cpu_workqueue_stats->first_entry Zhaolei
2009-04-20 7:02 ` [PATCH 3/4] trace_workqueue: Remove blank line between each cpu Zhaolei
2009-04-20 7:09 ` [PATCH 4/4] trace_workqueue: Add worklet information Zhaolei
2009-04-20 11:36 ` Frederic Weisbecker
2009-04-21 1:57 ` Zhaolei
2009-04-21 23:39 ` Frederic Weisbecker
2009-04-20 7:23 ` [PATCH 0/4] ftrace, workqueuetrace: Add worklet informationame Frederic Weisbecker
2009-04-13 14:34 ` [PATCH 1/1] tracing, workqueuetrace: Make workqueue tracepoints use TRACE_EVENT macro Frederic Weisbecker
2009-04-13 14:13 ` Frederic Weisbecker
2009-04-15 6:47 ` KOSAKI Motohiro
2009-04-13 13:57 ` [PATCH 0/1] " Frederic Weisbecker
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=20090428134209.GA5978@nowhere \
--to=fweisbec@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=oleg@redhat.com \
--cc=rostedt@goodmis.org \
--cc=tzanussi@gmail.com \
--cc=zhaolei@cn.fujitsu.com \
/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.