Re: [PATCH 1/1] psi: eliminate kthread_worker from psi trigger scheduling mechanism

From: Peter Zijlstra
Date: Thu Jun 04 2020 - 09:12:43 EST


On Thu, May 28, 2020 at 12:54:42PM -0700, Suren Baghdasaryan wrote:
> Each psi group requires a dedicated kthread_delayed_work and
> kthread_worker. Since no other work can be performed using psi_group's
> kthread_worker, the same result can be obtained using a task_struct and
> a timer directly. This makes psi triggering simpler by removing lists
> and locks involved with kthread_worker usage and eliminates the need for
> poll_scheduled atomic use in the hot path.
>
> Signed-off-by: Suren Baghdasaryan <surenb@xxxxxxxxxx>
> ---
> This patch is meant to address Peter's request in [1] to pull
> kthread_queue_delayed_work() out from under rq->lock. This should also address
> the lockdep warning about possibility of a circular dependency described in [2]

I think you could've just fixed kthread_queue_delayed_work(), that code
is sub-optimal.

But I suppose this works too.