From: Tejun Heo <tj@kernel.org>
To: Avi Kivity <avi@redhat.com>
Cc: "Ingo Molnar" <mingo@elte.hu>,
"Peter Zijlstra" <a.p.zijlstra@chello.nl>,
"Linus Torvalds" <torvalds@linux-foundation.org>,
"Frédéric Weisbecker" <fweisbec@gmail.com>,
jeff@garzik.org, linux-kernel@vger.kernel.org,
akpm@linux-foundation.org, jens.axboe@oracle.com,
rusty@rustcorp.com.au, cl@linux-foundation.org,
dhowells@redhat.com, arjan@linux.intel.com
Subject: Re: [RFC PATCHSET] workqueue: implement concurrency managed workqueue
Date: Fri, 02 Oct 2009 01:55:35 +0900 [thread overview]
Message-ID: <4AC4DF07.2090202@kernel.org> (raw)
In-Reply-To: <4AC4725E.3070509@redhat.com>
Hello,
Avi Kivity wrote:
> On 10/01/2009 10:40 AM, Ingo Molnar wrote:
>> Ok, this looks fairly interesting - and the way you reused scheduler
>> classes to auto-regulate with no impact on regular performance is quite
>> an ingenious idea as well. (KVM's preempt notifiers should probably use
>> this trick too, instead of an ugly notifier in the scheduler hotpath)
>>
>> This mechanism could be used to implement threadlets/syslets too btw.,
>> and other forms of asynchronous IO.
>>
>
> In fact I've thought of implementing threadlets and concurrency-managed
> workqueues with preempt notifiers ;)
:-)
> Isn't a scheduling class overkill for two existing callbacks? Note we
> can easily use a thread flag and __switch_to_xtra() to avoid the overhead.
The partial overriding only takes about seventy lines of code and is
conceptually trivial. I don't think it's an overkill.
> For kvm, we don't want to force a specific scheduling class for vcpu
> threads, so we'd need infrastructure to create a new scheduling class
> out of an existing one to hook the two callbacks. Seems like quite a
> lot of work, for something that is orthogonal to scheduling.
>
> Tejun, would preempt notifiers work for your workqueues? see bottom of
> include/linux/preempt.h.
I considered that but the thing is workqueue needs to know when a
thread wakes up not when it gets scheduled. Of course we can add
another notifier op and call it from try_to_wake_up() but I really
didn't want to add yet another hook in a very hot path which will only
be useful for very small number of tasks but yet has to be called for
every operation and the sched_class mechanism means that we already
have hooks at all the interesting spots, so I think it's better to
make use of them instead of adding another set of callbacks.
Thanks.
--
tejun
next prev parent reply other threads:[~2009-10-01 16:56 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-01 8:08 [RFC PATCHSET] workqueue: implement concurrency managed workqueue Tejun Heo
2009-10-01 8:09 ` [PATCH 01/19] freezer: don't get over-anxious while waiting Tejun Heo
2009-10-01 18:36 ` Pavel Machek
2009-10-01 21:04 ` Rafael J. Wysocki
2009-10-02 10:56 ` Tejun Heo
2009-10-02 10:56 ` Tejun Heo
2009-10-02 19:47 ` Oren Laadan
2009-10-02 21:04 ` Matt Helsley
2009-10-02 21:21 ` Rafael J. Wysocki
2009-10-02 21:21 ` Rafael J. Wysocki
2009-10-03 0:43 ` Tejun Heo
2009-10-03 0:43 ` Tejun Heo
2009-10-03 19:36 ` Rafael J. Wysocki
2009-10-03 19:36 ` Rafael J. Wysocki
2009-10-02 21:04 ` Matt Helsley
2009-10-02 19:47 ` Oren Laadan
2009-10-01 21:04 ` Rafael J. Wysocki
2009-10-01 8:09 ` [PATCH 02/19] scheduler: implement sched_class_equal() Tejun Heo
2009-10-01 8:09 ` [PATCH 03/19] scheduler: implement workqueue scheduler class Tejun Heo
2009-10-01 16:57 ` Linus Torvalds
2009-10-01 18:48 ` Ingo Molnar
2009-10-01 19:00 ` Avi Kivity
2009-10-01 19:11 ` Linus Torvalds
2009-10-01 19:23 ` Ingo Molnar
2009-10-01 20:03 ` Linus Torvalds
2009-10-01 19:15 ` Ingo Molnar
2009-10-01 19:06 ` Linus Torvalds
2009-10-02 12:23 ` Tejun Heo
2009-10-01 8:09 ` [PATCH 04/19] scheduler: implement force_cpus_allowed_ptr() Tejun Heo
2009-10-01 8:09 ` [PATCH 05/19] kthread: implement kthread_data() Tejun Heo
2009-10-01 8:09 ` [PATCH 06/19] acpi: use queue_work_on() instead of binding workqueue worker to cpu0 Tejun Heo
2009-10-01 12:57 ` David Howells
2009-10-01 17:07 ` Tejun Heo
2009-10-01 8:09 ` [PATCH 07/19] stop_machine: reimplement without using workqueue Tejun Heo
2009-10-06 9:36 ` Rusty Russell
2009-10-06 23:42 ` Tejun Heo
2009-10-01 8:09 ` [PATCH 08/19] workqueue: misc/cosmetic updates Tejun Heo
2009-10-01 8:09 ` [PATCH 09/19] workqueue: merge feature parametesr into flags Tejun Heo
2009-10-01 8:09 ` [PATCH 10/19] workqueue: update cwq alignement and make one more flag bit available Tejun Heo
2009-10-01 13:05 ` David Howells
2009-10-01 16:15 ` Jeff Garzik
2009-10-01 16:20 ` David Howells
2009-10-01 16:30 ` Tejun Heo
2009-10-01 16:39 ` Alan Cox
2009-10-01 18:45 ` Ben Pfaff
2009-10-02 11:56 ` Tejun Heo
2009-10-01 8:09 ` [PATCH 11/19] workqueue: define both bit position and mask for work flags Tejun Heo
2009-10-01 8:09 ` [PATCH 12/19] workqueue: separate out process_one_work() Tejun Heo
2009-10-01 8:09 ` [PATCH 13/19] workqueue: temporarily disable workqueue tracing Tejun Heo
2009-10-01 8:09 ` [PATCH 14/19] workqueue: (TEMPORARY) kill singlethread variant Tejun Heo
2009-10-01 8:09 ` [PATCH 15/19] workqueue: reimplement workqueue flushing using color coded works Tejun Heo
2009-10-01 17:03 ` Linus Torvalds
2009-10-01 17:11 ` Tejun Heo
2009-10-01 17:16 ` Tejun Heo
2009-10-01 8:09 ` [PATCH 16/19] workqueue: introduce worker Tejun Heo
2009-10-01 8:09 ` [PATCH 17/19] workqueue: reimplement work flushing using linked works Tejun Heo
2009-10-01 8:09 ` [PATCH 18/19] workqueue: reimplement workqueue freeze using cwq->frozen_works queue Tejun Heo
2009-10-01 8:09 ` [PATCH 19/19] workqueue: implement concurrency managed workqueue Tejun Heo
2009-10-01 13:15 ` David Howells
2009-10-02 12:03 ` Tejun Heo
2009-10-01 14:49 ` Andrew Morton
2009-10-01 15:12 ` Ingo Molnar
2009-10-01 16:34 ` Tejun Heo
2009-10-04 8:49 ` Peter Zijlstra
2009-10-01 17:12 ` Linus Torvalds
2009-10-01 17:22 ` Tejun Heo
2009-10-01 17:55 ` Linus Torvalds
2009-10-02 0:42 ` Andi Kleen
2009-10-02 12:09 ` Tejun Heo
2009-10-03 2:59 ` Andi Kleen
2009-10-02 14:28 ` Frédéric Weisbecker
2009-10-01 8:24 ` [RFC PATCHSET] " Jens Axboe
2009-10-01 16:36 ` Tejun Heo
2009-10-01 8:24 ` Jens Axboe
2009-10-01 16:25 ` Tejun Heo
2009-10-01 8:40 ` Ingo Molnar
2009-10-01 8:47 ` Jens Axboe
2009-10-01 9:01 ` Ingo Molnar
2009-10-01 9:05 ` Jens Axboe
2009-10-01 9:11 ` Avi Kivity
2009-10-01 9:22 ` Avi Kivity
2009-10-01 16:55 ` Tejun Heo [this message]
2009-10-01 17:06 ` Avi Kivity
2009-10-01 16:43 ` Tejun Heo
2009-10-01 12:53 ` David Howells
2009-10-02 11:44 ` Tejun Heo
2009-10-02 12:45 ` Stefan Richter
2009-10-02 15:38 ` David Howells
2009-10-03 5:07 ` Tejun Heo
2009-10-04 8:41 ` Peter Zijlstra
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=4AC4DF07.2090202@kernel.org \
--to=tj@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=arjan@linux.intel.com \
--cc=avi@redhat.com \
--cc=cl@linux-foundation.org \
--cc=dhowells@redhat.com \
--cc=fweisbec@gmail.com \
--cc=jeff@garzik.org \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rusty@rustcorp.com.au \
--cc=torvalds@linux-foundation.org \
/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.