Messages in this thread | | | Subject | Re: [PATCHSET] workqueue: implement and use WQ_UNBOUND | From | Tejun Heo <> | Date | Wed, 21 Jul 2010 00:39:13 +0200 |
| |
Hello, David.
"David Howells" <dhowells@redhat.com> wrote: > Does this mean you don't get reentrancy guarantees with unbounded work queues?
It means that unbound wq behaves like a generic worker pool. Bound wq limits concurrency to minimal level but unbound one executes works as long as resources are available. I'll continue below.
>I can't work out how you're achieving it with unbounded queues. I presume with >CPU-bound workqueues your doing it by binding the work item to the current CPU >still...
Unbound works are served by a dedicated gcwq whose workers are not affine to any particular CPU. As all unbound works are served by the same gcwq, non reentrancy is automatically guaranteed.
>Btw, how does this fare in an RT system, where work items bound to a CPU can't >get executed because their CPU is busy with an RT thread, even though there are >other, idle CPUs?
Sure, there's nothing special about unbound workers. They're just normal kthreads.
>> Oh, and Frederic suggested that we would be better off with something based >> on tracing API and I agree, so the debugfs thing is currently dropped from >> the tree. What do you think? > >I probably disagree. I just want to be able to cat a file and see the current >runqueue state. I don't want to have to write and distribute a special program >to do this. Of course, I don't know that much about the tracing API, so >cat'ing a file to get the runqueue listed nicely may be possible with that.
I'm relatively sure we can do that. Frederic?
Thanks.
-- tejun
| |