Re: [RFC PATCH V5 5/5] workqueue: introduce a way to set workqueue's scheduler

From: Mike Galbraith
Date: Sat Jan 27 2018 - 04:32:23 EST


On Sat, 2018-01-27 at 13:15 +0800, Wen Yang wrote:
> When pinning RT threads to specific cores using CPU affinity, the
> kworkers on the same CPU would starve, which may lead to some kind
> of priority inversion. In that case, the RT threads would also
> suffer high performance impact.

...

> This patch introduces a way to set the scheduler(policy and priority)
> of percpu worker_pool, in that way, user could set proper scheduler
> policy and priority of the worker_pool as needed, which could apply
> to all the WORK_CPU_BOUND workers on the same CPU.

What happens when a new kworker needs to be spawned?  What guarantees
that kthreadd can run?  Not to mention other kthreads that can be
starved, resulting in severe self inflicted injury.  An interface to
configure workqueues is very nice, but it's only part of the problem.

-Mike