On Tue, Jan 23, 2018 at 01:24:24PM -0500, David Miller wrote: > From: Linus Torvalds <torva...@linux-foundation.org> > Date: Tue, 23 Jan 2018 09:42:32 -0800 > > > But I wonder if the test triggers the "lets run lots of workqueue > > threads", and then the single-threaded user space just gets blown out > > of the water by many kernel threads. Each thread gets its own "fair" > > amount of CPU, but.. > > If a single cpu's softirq deferral can end up running on multiple > workqueue threads, indeed that's a serious problem. > > So if we're in a workqueue and it does a: > > schedule_work_on(this_cpu, currently_executing_work); > > it'll potentially make a new thread? > > That's exactly the code path that will get exercised during a UDP > flood the way that vector_work_func() is implemented.
It shouldn't create a new thread unless all other workers in the CPU are voluntarily sleeping while executing a work. Also since softirqs can't sleep, we shouldn't even have two vectors running concurrently on workqueues.