[RFC PATCH 0/3] nvme-pci: dynamic interrupt moderation
Fengnan
changfengnan at bytedance.com
Wed Oct 14 00:58:57 PDT 2026
Hi Keith:
I ran some quick tests using your patch on the PS1010 and SN861.
For 4K random reads with QD=8, both drives showed a performance drop
of about 19%.
With QD=64/128, there was an improvement of roughly 10–20%.
I think the reason is that the current logic still relies on the QD
depth to determine whether to switch, but a high QD doesn't necessarily
mean that using the poll mode will be more efficient.
As for DIM, I tried using it based on my V2 patch, but the result was
that I either had to add several new DIM functions to perform similar
checks, or I still ended up with a performance regression.
Here is detail data
https://docs.google.com/spreadsheets/d/1VOR0xB5yk-z6IMwwRvp8R0yd4k_tMi_wI27Pl-dEQVg/edit?gid=789521759#gid=789521759
Based on the results, it doesn’t perform as well as my previous patch:
https://docs.google.com/spreadsheets/d/1rer4Nl5HHxSO-D3NrrHuHSfpR9s1kLhpLjzh7h7Mbmw/edit?gid=875909538#gid=875909538
在 2026/10/14 06:35, Keith Busch 写道:
> From: Keith Busch <kbusch at kernel.org>
>
> Just adding another nvme hybrid interrupt and polling mechanism to the
> lists. There's some recent alternatives mentioned in the links below,
> but I'm trying one last time to leverage the DIM framework. Performance
> wise, this at least doesn't seem any worse than anything else proposed,
> though I've only been able to test on mid-level hardware so far.
>
> This one here as some irq prep patches that help some when transitioning
> from irq to polling for MSI-x enabled NVMe completions. These should be
> generally applicable, so isn't necessarily tied to how it gets used in
> the last patch if someone else finds it useful too.
>
> Links:
>
> [1] https://lore.kernel.org/linux-nvme/20261009050556.2817978-1-namjain@linux.microsoft.com/
>
> [2] https://lore.kernel.org/linux-nvme/20260818033846.53790-1-changfengnan@bytedance.com/
>
> Keith Busch (3):
> genirq: Add disable_irq_nowait()
> PCI/MSI: Implement irq_mask_nowait() for MSI-X
> nvme-pci: hybrid irq+polling
>
> drivers/irqchip/irq-msi-lib.c | 1 +
> drivers/nvme/host/Kconfig | 2 +
> drivers/nvme/host/pci.c | 624 ++++++++++++++++++++++++++++++++--
> drivers/nvme/host/trace.c | 1 +
> drivers/nvme/host/trace.h | 26 ++
> drivers/pci/msi/irqdomain.c | 6 +
> drivers/pci/msi/msi.h | 8 +-
> include/linux/interrupt.h | 1 +
> include/linux/irq.h | 4 +
> kernel/irq/chip.c | 31 ++
> kernel/irq/internals.h | 1 +
> kernel/irq/manage.c | 21 ++
> 12 files changed, 698 insertions(+), 28 deletions(-)
>
More information about the Linux-nvme
mailing list