Prev: 2.6.34: simple IOMMU API extension to check safe interrupt remapping
Next: reiserfs locking (v2)
From: David Howells on 21 Jul 2010 09:20 Tejun Heo <tj(a)kernel.org> wrote: > As all unbound works are served by the same gcwq, non reentrancy is > automatically guaranteed. That doesn't actually explain _how_ it's non-reentrant. The gcwq includes a collection of threads that can execute from it, right? If so, what mechanism prevents two threads from executing the same work item, if that work item isn't bound to a CPU? I've been trying to figure this out from the code, but I don't see it offhand. > > 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. I should've been clearer: As I understand it, normal (unbound) worker items are bound to the CPU on which they were queued, and will be executed there only (barring CPU removal). If that's the case, isn't it possible that work items can be prevented from getting execution time by an RT thread that's hogging a CPU and won't let go? David -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Tejun Heo on 21 Jul 2010 11:10 Just a bit of clarification. On 07/21/2010 04:59 PM, Tejun Heo wrote: >> I should've been clearer: As I understand it, normal (unbound) worker items In workqueue land, normal workqueues would be bound to CPUs while workers for WQ_UNBOUND workqueues aren't affined to any specific CPU. Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: David Howells on 21 Jul 2010 11:30 Tejun Heo <tj(a)kernel.org> wrote: > Each gcwq keeps track of currently running works in a hash table and looks > whether the work in question is already executing before starting executing > it. It's a bit complex but as a work_struct may be freed once execution > starts, the status needs to be tracked outside. Thanks, that's what I wanted to know. I presume this survives an executing work_struct being freed, reallocated and requeued before the address of the work_struct is removed from the hash table? I can see at least one way of doing this: marking the work_struct address in the hash when the address becomes pending again so that the process of hash removal will cause the work_struct to be requeued automatically. David -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Tejun Heo on 21 Jul 2010 11:40 Hello, On 07/21/2010 05:25 PM, David Howells wrote: >> Each gcwq keeps track of currently running works in a hash table and looks >> whether the work in question is already executing before starting executing >> it. It's a bit complex but as a work_struct may be freed once execution >> starts, the status needs to be tracked outside. > > Thanks, that's what I wanted to know. > > I presume this survives an executing work_struct being freed, reallocated and > requeued before the address of the work_struct is removed from the hash table? It will unnecessarily stall the execution of the new work if the last work is still running but nothing will be broken correctness-wise. > I can see at least one way of doing this: marking the work_struct address in > the hash when the address becomes pending again so that the process of hash > removal will cause the work_struct to be requeued automatically. If I'm correctly understanding what you're saying, the code already does about the same thing. Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: David Howells on 21 Jul 2010 11:40 Tejun Heo <tj(a)kernel.org> wrote: > If I'm correctly understanding what you're saying, the code already > does about the same thing. Cool. Btw, it seems to work for fscache. Feel free to add my Acked-by to your patches. David -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
First
|
Prev
|
Next
|
Last
Pages: 1 2 3 Prev: 2.6.34: simple IOMMU API extension to check safe interrupt remapping Next: reiserfs locking (v2) |