All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3 v2] blk-mq: Don't complete in IRQ, use llist_head
@ 2020-12-04 19:13 Sebastian Andrzej Siewior
  2020-12-04 19:13 ` [PATCH 1/3] blk-mq: Don't complete on a remote CPU in force threaded mode Sebastian Andrzej Siewior
                   ` (2 more replies)
  0 siblings, 3 replies; 42+ messages in thread
From: Sebastian Andrzej Siewior @ 2020-12-04 19:13 UTC (permalink / raw)
  To: linux-block
  Cc: Jens Axboe, Thomas Gleixner, Peter Zijlstra, Daniel Wagner,
	Mike Galbraith, Christoph Hellwig, Sagi Grimberg

This a repost of the patches in the old thread [0] which died, rebase against
-next.

The series avoids completing the requests on a remote CPU if booted with
threadirqs. It avoids completing requests in hard-IRQ context on remote
CPU by deferring it to the the softirq context.

One change since the last post: preempt-disable() around llist_add() +
raise_softirq() to ensure that request is added on the same CPU where
the softirq is raised. Some callers (like usb-storage) invoke this
function from preemtible context and this preserves the current "call me
from any context" semantic.
My understanding is that in a later attempt we may change such callers
to complete directly and avoid the softirq ping-pong.

[0] https://lkml.kernel.org/r/20201028141251.3608598-1-bigeasy@linutronix.de

Sebastian



^ permalink raw reply	[flat|nested] 42+ messages in thread
* [PATCH v3 0/3] blk-mq: Don't complete in IRQ, use llist_head
@ 2021-01-23 20:10 Sebastian Andrzej Siewior
  2021-01-23 20:10 ` [PATCH 2/3] blk-mq: Always complete remote completions requests in softirq Sebastian Andrzej Siewior
  0 siblings, 1 reply; 42+ messages in thread
From: Sebastian Andrzej Siewior @ 2021-01-23 20:10 UTC (permalink / raw)
  To: linux-block, linux-kernel
  Cc: Jens Axboe, Thomas Gleixner, Peter Zijlstra, Ingo Molnar

Patch 2+3 were applied and then dropped by Jens due to a NOHZ+softirq
related warning [0]. Turns out a successful wakeup via
set_nr_if_polling() will not process any softirqs and the CPU may go
back to idle. This is addressed by patch #1.

smpcfd_dying_cpu() will also invoke SMP-functions calls via
flush_smp_call_function_queue() but the block layer shouldn't queue
anything because the CPU isn't online anymore.
The two caller of flush_smp_call_function_from_idle() look fine with
opening interrupts from within do_softirq().

[0] https://lkml.kernel.org/r/1ee4b31b-350e-a9f5-4349-cfb34b89829a@kernel.dk

Sebastian



^ permalink raw reply	[flat|nested] 42+ messages in thread
* Re: [PATCH RFC] blk-mq: Don't IPI requests on PREEMPT_RT
@ 2020-10-28  6:56 Christoph Hellwig
  2020-10-28 14:12 ` [PATCH 1/3] blk-mq: Don't complete on a remote CPU in force threaded mode Sebastian Andrzej Siewior
  0 siblings, 1 reply; 42+ messages in thread
From: Christoph Hellwig @ 2020-10-28  6:56 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior
  Cc: Christoph Hellwig, Thomas Gleixner, David Runge, linux-rt-users,
	Jens Axboe, linux-block, linux-kernel, Peter Zijlstra,
	Daniel Wagner

> The remaining part is a switch to llist which avoids locking (IRQ
> off/on) and it allows invoke the IPI/raise softirq only if something was
> added. The entries are now processed in the reverse order but this
> shouldn't matter right?

For correctness it should not matter, but I think it could have
performance implications.  I think you'll have to throw in a
llist_reverse_order.

> I would split this into two patches (the blk_mq_complete_need_ipi() hunk
> and the llist part) unless there are objections.

Yes, please do.

^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2021-01-27 11:24 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-04 19:13 [PATCH 0/3 v2] blk-mq: Don't complete in IRQ, use llist_head Sebastian Andrzej Siewior
2020-12-04 19:13 ` [PATCH 1/3] blk-mq: Don't complete on a remote CPU in force threaded mode Sebastian Andrzej Siewior
2020-12-08 13:10   ` Christoph Hellwig
2020-12-04 19:13 ` [PATCH 2/3] blk-mq: Always complete remote completions requests in softirq Sebastian Andrzej Siewior
2020-12-07 23:52   ` Jens Axboe
2020-12-08  8:22     ` Sebastian Andrzej Siewior
2020-12-08  8:44       ` Daniel Wagner
2020-12-08 11:36         ` Daniel Wagner
2020-12-08 11:49           ` Sebastian Andrzej Siewior
2020-12-08 12:41             ` Daniel Wagner
2020-12-08 12:52               ` Sebastian Andrzej Siewior
2020-12-08 12:57                 ` Sebastian Andrzej Siewior
2020-12-08 13:27                   ` Daniel Wagner
2020-12-17 16:45         ` Jens Axboe
2020-12-17 16:49           ` Daniel Wagner
2020-12-17 16:54             ` Jens Axboe
2020-12-08 13:13     ` Christoph Hellwig
2020-12-17 16:43       ` Sebastian Andrzej Siewior
2020-12-17 16:55         ` Jens Axboe
2020-12-17 16:58           ` Sebastian Andrzej Siewior
2020-12-17 17:05             ` Daniel Wagner
2020-12-17 18:16           ` Daniel Wagner
2020-12-17 18:22             ` Jens Axboe
2020-12-17 18:41               ` Daniel Wagner
2020-12-17 18:46                 ` Jens Axboe
2020-12-17 19:07                   ` Daniel Wagner
2020-12-17 19:13                     ` Jens Axboe
2020-12-17 19:15                       ` Daniel Wagner
2020-12-04 19:13 ` [PATCH 3/3] blk-mq: Use llist_head for blk_cpu_done Sebastian Andrzej Siewior
2020-12-08 13:20   ` Christoph Hellwig
2020-12-08 13:28     ` Christoph Hellwig
2020-12-14 20:20     ` Sebastian Andrzej Siewior
  -- strict thread matches above, loose matches on Subject: below --
2021-01-23 20:10 [PATCH v3 0/3] blk-mq: Don't complete in IRQ, use llist_head Sebastian Andrzej Siewior
2021-01-23 20:10 ` [PATCH 2/3] blk-mq: Always complete remote completions requests in softirq Sebastian Andrzej Siewior
2021-01-25  7:10   ` Hannes Reinecke
2021-01-25  8:25     ` Christoph Hellwig
2021-01-25  8:30       ` Sebastian Andrzej Siewior
2021-01-25  8:32         ` Christoph Hellwig
2021-01-25  9:29           ` Sebastian Andrzej Siewior
2021-01-25  8:22   ` Christoph Hellwig
2021-01-25  8:49     ` Christoph Hellwig
2021-01-27 11:22   ` Daniel Wagner
2020-10-28  6:56 [PATCH RFC] blk-mq: Don't IPI requests on PREEMPT_RT Christoph Hellwig
2020-10-28 14:12 ` [PATCH 1/3] blk-mq: Don't complete on a remote CPU in force threaded mode Sebastian Andrzej Siewior
2020-10-28 14:12   ` [PATCH 2/3] blk-mq: Always complete remote completions requests in softirq Sebastian Andrzej Siewior

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.