Re: [RFC PATCH 0/4] softirq: Per vector threading v3

From: Frederic Weisbecker
Date: Tue Jan 23 2018 - 20:57:45 EST


On Tue, Jan 23, 2018 at 01:24:24PM -0500, David Miller wrote:
> From: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> 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.