From: Thomas Gleixner <tglx@linutronix.de>
To: Luigi Rizzo <lrizzo@google.com>, Marc Zyngier <maz@kernel.org>,
Luigi Rizzo <rizzo.unipi@gmail.com>,
Paolo Abeni <pabeni@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
Sean Christopherson <seanjc@google.com>,
Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
Bjorn Helgaas <bhelgaas@google.com>,
Willem de Bruijn <willemb@google.com>,
Luigi Rizzo <lrizzo@google.com>
Subject: Re: [PATCH v2 3/8] genirq: soft_moderation: implement fixed moderation
Date: Tue, 18 Nov 2025 00:16:20 +0100 [thread overview]
Message-ID: <87bjl06yij.ffs@tglx> (raw)
In-Reply-To: <87seec78yf.ffs@tglx>
On Mon, Nov 17 2025 at 20:30, Thomas Gleixner wrote:
> On Sun, Nov 16 2025 at 18:28, Luigi Rizzo wrote:
>> + ms->rounds_left--;
>> +
>> + if (ms->rounds_left > 0) {
>> + /* Timer still alive, just call the handlers. */
>> + list_for_each_entry_safe(desc, next, &ms->descs, mod.ms_node) {
>> + ms->irq_count += irq_mod_info.count_timer_calls;
I missed this gem before. How is this supposed to calculate an interrupt
rate when count_timer_calls is disabled?
Yet another magic knob to tweak something which works by chance and not
by design.
TBH. This whole thing should be put into the 'ugly code museum' for
educational purposes and deterrence. It wants to be rewritten from
scratch with a proper design and a structured understandable approach.
This polish the Google PoC hackery to death will go nowhere. It's just a
ginormous waste of time. Not that I care about the time you waste with
that, but I pretty much care about mine.
That said, start over from scratch and take the feedback into account so
you can address the substantial problems I pointed out (CPU hotplug,
concurrency, life time management, state consistency, affinity changes)
in the design and not after the fact.
First of all please find some other wording than moderation. That's just
a randomly diced word without real meaning. Pick something which
describes what this infrastructure actually does: Adaptive polling, no?
There are a couple of other fundamental questions to answer upfront:
1) Is this throttle everything on a CPU the proper approach?
To me this does not make sense. The CPU hogging network adapter or
disk drive has no business to delay low frequency interrupts,
which might be important, just because.
Making this a per interrupt line property allows to solve a few
other issues trivially like the integration into that posted MSI
muck.
It also reduces the amount of descriptors to be polled in the
timer interrupt.
2) Shouldn't the interrupt source be masked at the device level once
an interrupt is switched into polling mode?
Masking it at the device level (without touching disabled state)
is definitely a sensible thing to do. It keeps state consistent
and again allows trivial integration of that posted MSI stuff
without insane hacks all over the place.
3) Does a pure interrupt rate based scheme make sense?
Definitely not in the way it's implemented. Why?
Simply because once you switched to polling mode there is no real
information anymore as you fail to take the return value of the
handler into account. So unless your magic knob is 0 every polled
interrupt is accounted for whether it actually handles an
interrupt or not.
But if your magic knob is 0 then this purely relies on irqtime
accounting, which includes the timer interrupt as an accumulative
measure.
IOW, "works" by some definition of works after adding enough magic
knobs to make it "work" under certain circumstances. "Works for
Google" is not a good argument.
That's unmaintainable and unusable. No amount of magic command
line examples will fix that because the state space of your knobs
is way too big to be useful and comprehensible.
Add all the questions which pop up when you really sit down and do a
proper from scratch design of this.
Thanks,
tglx
next prev parent reply other threads:[~2025-11-17 23:16 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-16 18:28 [PATCH v2 0/8] platform wide software interrupt moderation Luigi Rizzo
2025-11-16 18:28 ` [PATCH v2 1/8] genirq: platform wide interrupt moderation: Documentation, Kconfig, irq_desc Luigi Rizzo
2025-11-16 18:28 ` [PATCH v2 2/8] genirq: soft_moderation: add base files, procfs Luigi Rizzo
2025-11-17 11:12 ` kernel test robot
2025-11-17 16:01 ` Thomas Gleixner
2025-11-17 16:16 ` Luigi Rizzo
2025-11-17 19:35 ` Thomas Gleixner
2025-11-17 21:56 ` kernel test robot
2025-11-16 18:28 ` [PATCH v2 3/8] genirq: soft_moderation: implement fixed moderation Luigi Rizzo
2025-11-17 19:30 ` Thomas Gleixner
2025-11-17 23:16 ` Thomas Gleixner [this message]
2025-11-17 23:59 ` Luigi Rizzo
2025-11-18 8:34 ` Thomas Gleixner
2025-11-18 10:09 ` Luigi Rizzo
2025-11-18 16:31 ` Thomas Gleixner
2025-11-18 18:25 ` Luigi Rizzo
2025-11-18 23:06 ` Luigi Rizzo
2025-11-19 14:43 ` Thomas Gleixner
2025-11-21 10:58 ` Luigi Rizzo
2025-11-21 14:33 ` Luigi Rizzo
2025-11-22 14:08 ` Thomas Gleixner
2025-11-16 18:28 ` [PATCH v2 4/8] genirq: soft_moderation: implement adaptive moderation Luigi Rizzo
2025-11-17 20:51 ` Thomas Gleixner
2025-11-17 21:34 ` Luigi Rizzo
2025-11-17 23:05 ` Thomas Gleixner
2025-11-18 9:00 ` Thomas Gleixner
2025-11-16 18:28 ` [PATCH v2 5/8] x86/irq: soft_moderation: add support for posted_msi (intel) Luigi Rizzo
2025-11-17 21:14 ` Thomas Gleixner
2025-11-17 21:36 ` kernel test robot
2025-11-16 18:28 ` [PATCH v2 6/8] genirq: soft_moderation: helpers for per-driver defaults Luigi Rizzo
2025-11-16 18:28 ` [PATCH v2 7/8] nvme-pci: add module parameter for default moderation mode Luigi Rizzo
2025-11-16 18:28 ` [PATCH v2 8/8] vfio-pci: " Luigi Rizzo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87bjl06yij.ffs@tglx \
--to=tglx@linutronix.de \
--cc=akpm@linux-foundation.org \
--cc=bhelgaas@google.com \
--cc=jacob.jun.pan@linux.intel.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lrizzo@google.com \
--cc=maz@kernel.org \
--cc=pabeni@redhat.com \
--cc=rizzo.unipi@gmail.com \
--cc=seanjc@google.com \
--cc=willemb@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).