lkml.org 
[lkml]   [2010]   [Jun]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Overview of concurrency managed workqueue
On Wed, 16 Jun 2010 18:55:05 +0200
Tejun Heo <tj@kernel.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?


\
 
 \ /
  Last update: 2010-06-18 01:19    [W:0.159 / U:0.952 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site