All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] nvme-pci: trigger disk activity LED
@ 2022-02-27 23:42 Enzo Matsumiya
  2022-02-28  9:22 ` Christoph Hellwig
  0 siblings, 1 reply; 5+ messages in thread
From: Enzo Matsumiya @ 2022-02-27 23:42 UTC (permalink / raw)
  To: linux-nvme
  Cc: Enzo Matsumiya, Keith Busch, Jens Axboe, Christoph Hellwig,
	Sagi Grimberg, linux-kernel

Users can enable an LED to indicate I/O activity on NVMe PCIe devices:

  # echo "disk-activity" > /sys/class/leds/<led>/trigger

for the composite activity, or disk-{read,write} for individual
activities/LEDs.

Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
---
 drivers/nvme/host/pci.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 6a99ed680915..3e49d5980beb 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -15,6 +15,7 @@
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
+#include <linux/leds.h>
 #include <linux/mm.h>
 #include <linux/module.h>
 #include <linux/mutex.h>
@@ -1037,6 +1038,8 @@ static __always_inline void nvme_pci_unmap_rq(struct request *req)
 			       rq_integrity_vec(req)->bv_len, rq_data_dir(req));
 	if (blk_rq_nr_phys_segments(req))
 		nvme_unmap_data(dev, req);
+
+	ledtrig_disk_activity(req_op(req) == REQ_OP_WRITE);
 }
 
 static void nvme_pci_complete_rq(struct request *req)
-- 
2.34.1


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

* Re: [PATCH] nvme-pci: trigger disk activity LED
  2022-02-27 23:42 [PATCH] nvme-pci: trigger disk activity LED Enzo Matsumiya
@ 2022-02-28  9:22 ` Christoph Hellwig
  2022-02-28 13:58   ` Jens Axboe
  0 siblings, 1 reply; 5+ messages in thread
From: Christoph Hellwig @ 2022-02-28  9:22 UTC (permalink / raw)
  To: Enzo Matsumiya
  Cc: linux-nvme, Keith Busch, Jens Axboe, Christoph Hellwig,
	Sagi Grimberg, linux-kernel

I don't think we should add code to the absolutel fast path for
blinkenlights.

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

* Re: [PATCH] nvme-pci: trigger disk activity LED
  2022-02-28  9:22 ` Christoph Hellwig
@ 2022-02-28 13:58   ` Jens Axboe
  2022-03-01  3:30     ` Enzo Matsumiya
  0 siblings, 1 reply; 5+ messages in thread
From: Jens Axboe @ 2022-02-28 13:58 UTC (permalink / raw)
  To: Christoph Hellwig, Enzo Matsumiya
  Cc: linux-nvme, Keith Busch, Jens Axboe, Sagi Grimberg, linux-kernel

On 2/28/22 2:22 AM, Christoph Hellwig wrote:
> I don't think we should add code to the absolutel fast path for
> blinkenlights.

Agree. It'd be a lot better to put the cost on the led trigger
side, and not need anything in the fast path for block devices.
Monitor disk stats, or something like that.

-- 
Jens Axboe


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

* Re: [PATCH] nvme-pci: trigger disk activity LED
  2022-02-28 13:58   ` Jens Axboe
@ 2022-03-01  3:30     ` Enzo Matsumiya
  2022-03-01  3:36       ` Jens Axboe
  0 siblings, 1 reply; 5+ messages in thread
From: Enzo Matsumiya @ 2022-03-01  3:30 UTC (permalink / raw)
  To: Jens Axboe
  Cc: Christoph Hellwig, linux-nvme, Keith Busch, Jens Axboe,
	Sagi Grimberg, linux-kernel

On 02/28, Jens Axboe wrote:
>On 2/28/22 2:22 AM, Christoph Hellwig wrote:
>> I don't think we should add code to the absolutel fast path for
>> blinkenlights.
>
>Agree. It'd be a lot better to put the cost on the led trigger
>side, and not need anything in the fast path for block devices.
>Monitor disk stats, or something like that.

There's been at least 4 attempts to do so, as far as I'm aware (one of
them being mine). All got rejected due to the complexity it introduced,
that's how I ended up with this one-liner.

Performance-wise, I'm understand the problems, but according to ftrace,
ledtrig_disk_activity() adds an average of 0.2us overhead, whether an
LED is assigned or not. Is that really unacceptable?

If so, would introducing a CONFIG_NVME_LED (default =n) and wrap that
call around it make it better? Then at least there's a chance to inform
users that desires this feature about performance costs.


Cheers,

Enzo

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

* Re: [PATCH] nvme-pci: trigger disk activity LED
  2022-03-01  3:30     ` Enzo Matsumiya
@ 2022-03-01  3:36       ` Jens Axboe
  0 siblings, 0 replies; 5+ messages in thread
From: Jens Axboe @ 2022-03-01  3:36 UTC (permalink / raw)
  To: Enzo Matsumiya
  Cc: Christoph Hellwig, linux-nvme, Keith Busch, Jens Axboe,
	Sagi Grimberg, linux-kernel

On 2/28/22 8:30 PM, Enzo Matsumiya wrote:
> On 02/28, Jens Axboe wrote:
>> On 2/28/22 2:22 AM, Christoph Hellwig wrote:
>>> I don't think we should add code to the absolutel fast path for
>>> blinkenlights.
>>
>> Agree. It'd be a lot better to put the cost on the led trigger
>> side, and not need anything in the fast path for block devices.
>> Monitor disk stats, or something like that.
> 
> There's been at least 4 attempts to do so, as far as I'm aware (one of
> them being mine). All got rejected due to the complexity it introduced,
> that's how I ended up with this one-liner.
> 
> Performance-wise, I'm understand the problems, but according to ftrace,
> ledtrig_disk_activity() adds an average of 0.2us overhead, whether an
> LED is assigned or not. Is that really unacceptable?

On fast devices, we can complete a full IO in ~3us. If it's 6-7% of
overhead for that case, then yes, that is definitely unacceptable.

It's as much the principle of it. If it can be done in such a way that a
feature that almost nobody would use doesn't add to the fast path, then
it should be done that way.

What kind of frequency does this need to be toggled at? Surely not
hundreds of thousands or even million times per second? If it's suitably
low, then a registration scheme and a running timer would be a much
better idea. Each time the timer triggers, check devices you are
interested in and toggle the LED based on that. No fast path additions
for that, and it keeps the cost at zero for folks that don't need an LED
trigger for drive activity.

> If so, would introducing a CONFIG_NVME_LED (default =n) and wrap that
> call around it make it better? Then at least there's a chance to inform
> users that desires this feature about performance costs.

Doesn't really help, because then distros turn it on and we're back
where we would be if we didn't have a config option...

-- 
Jens Axboe


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

end of thread, other threads:[~2022-03-01  3:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-27 23:42 [PATCH] nvme-pci: trigger disk activity LED Enzo Matsumiya
2022-02-28  9:22 ` Christoph Hellwig
2022-02-28 13:58   ` Jens Axboe
2022-03-01  3:30     ` Enzo Matsumiya
2022-03-01  3:36       ` Jens Axboe

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.