|From:||Andrew Morton <akpm-AT-linux-foundation.org>|
|To:||Tejun Heo <tj-AT-kernel.org>|
|Subject:||Re: Overview of concurrency managed workqueue|
|Date:||Thu, 17 Jun 2010 16:15:39 -0700|
|Cc:||Daniel Walker <dwalker-AT-codeaurora.org>, mingo-AT-elte.hu, awalls-AT-radix.net, linux-kernel-AT-vger.kernel.org, jeff-AT-garzik.org, rusty-AT-rustcorp.com.au, cl-AT-linux-foundation.org, dhowells-AT-redhat.com, arjan-AT-linux.intel.com, johannes-AT-sipsolutions.net, oleg-AT-redhat.com, axboe-AT-kernel.dk|
On Wed, 16 Jun 2010 18:55:05 +0200 Tejun Heo <firstname.lastname@example.org> wrote: > It was about using wq for cpu intensive / RT stuff. Linus said, > > So stop arguing about irrelevancies. Nobody uses workqueues for RT > or for CPU-intensive crap. It's not what they were designed for, or > used for. kernel/padata.c uses workqueues for cpu-intensive work, as I understand it. I share Daniel's concerns here. Being able to set a worker thread's priority or policy isn't a crazy thing. Also one might want to specify that a work item be executed on one of a node's CPUs, or within a cpuset's CPUs, maybe other stuff. I have vague feelings that there's already code in the kernel somewhere which does some of these things. (Please remind me what your patches did about create_rt_workqueue and stop_machine?) (Please note that drivers/media/video/ivtv/ivtv-irq.c is currently running sched_setscheduler() against a workqueue thread of its own creation, so we have precedent). If someone wants realtime service for a work item then at present, the way to do that is to create your own kernel threads, set their policy and start feeding them work items. That sounds like a sensible requirement and implementation to me. But how does it translate into the new implementation? The priority/policy logically attaches to the work itself, not to the thread which serves it. So one would want to be able to provide that info at queue_work()-time. Could the workqueue core then find a thread, set its policy/priority, schedule it and then let the CPU scheduler do its usual thing with it? That doesn't sound too bad? Add policy/priority/etc fields to the work_struct?
Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds