Messages in this thread |  | | Date | Thu, 28 Nov 2013 09:31:55 -0500 | From | Tejun Heo <> | Subject | Re: [PATCH]: exec: avoid propagating PF_NO_SETAFFINITY into userspace child |
| |
Hello,
On Thu, Nov 28, 2013 at 03:23:59PM +0100, Oleg Nesterov wrote: > Yes, the naming is misleading. But it was always misleading. > "singlethreaded" meant a single thread, yes, but this just reflected the > implementation details. What it actually meant is: not bound to any cpu, > and the works can't race with each other.
Way back when it was actually a singlethread, the naming was kinda okay. Now it's a deprecated interface. I just didn't finish convering the existing ones to alloc_ordered_workqueue().
> create_singlethread_workqueue() still has the same semantics due to > WQ_UNBOUND && max_active == 1. So in this sense (max_active == 1) it > is still single threaded, just (iiuc, Tejun can correct me) it does > not guarantee that the kernel thread which actually runs the work will > be always the same.
So, the thing with create_singlethread_workqueue() is that the original implementation guaranteed dedicated execution resource, which means that it requires WQ_RESCUER in the new (well, newer) implementation. Also, singlethread workqueue used to be used not because singlethreadedness was necessary but just to avoid creating all the per-cpu workers, which is no longer necessary and actually is less efficient. So, converting create_singlethread_workqueue() instances to the new interface usually involves making the two determinations.
* Is WQ_RESCUER actually necessary? If not, WQ_RESCUER will be dropped and the task bearing the name of the workqueue will no longer exist.
* Is ordered execution necessary? If not, it can be converted to alloc_workqueue() or just to use system_wq.
khelper is special as its attributes get inherited to its children, so, yeah, we probably wanna keep that one's cpumask set to all. Hmmm... I think it's already broken. So, on NUMA machines, unbound workqueues will be segmented to each NUMA node by default. If khelper is gonna keep using workqueue, it should set turn on no_numa attribute explicitly. I'll prep a patch.
Thanks.
-- tejun
|  |