Re: [PATCH 2/3] workqueue: use dedicated creater kthread for all pools

Tejun Heo
2014-07-29T02:16:49Z

Hello,

On Tue, Jul 29, 2014 at 09:26:35AM +0800, Lai Jiangshan wrote:
> > It's a bit difficult to get excited about this patchset given that
> > this is mostly churn without many actual benefits. Sure, it
> > consolidates one-per-pool managers into one kthread_worker but it was
> > one-per-pool already. That said, I don't hate it and it may be
> > considered an improvement. I don't know.
>
> It prefers to processing works rather than creating worker without any
> loss of the guarantee.
>
> processing works makes directly progress for the system.
> creating worker makes delay and indirectly progress.

That's misleading, isn't it? Both process work items the same. The
only difference is per-pool manager ends up using more tasks, thus a
bit more memory, doing it. There really is no signficant behavior
difference between the two schemes except for how many tasks end up
serving as the manager.

> > This is kinda silly when the duty of worker creation is served by an
> > external entity. Why would a pool need any idle worker?
>
> The idle worker must be ready or being prepared for wq_worker_sleeping()
> or chained-wake-up.
>
> percpu-kthreadd can serve for wq_worker_sleeping() in this case, but it is
> not a good idle to introduce percpu-kthreadd now since no other user.

Hmmm... I'm not really sure what we're getting with this. It doesn't
look much simpler to me. :(

Lai, I don't know. If this ends up simplifying things significantly,
sure, but as it currently stands, I can't see why we'd need to do
this. If you wanna pursue this, please try to make it more
beneficial.

Thanks.

--
tejun