From: Ming Lei <ming.lei@redhat.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org, Long Li <longli@microsoft.com>,
Ingo Molnar <mingo@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Keith Busch <keith.busch@intel.com>, Jens Axboe <axboe@fb.com>,
Christoph Hellwig <hch@lst.de>, Sagi Grimberg <sagi@grimberg.me>,
John Garry <john.garry@huawei.com>,
Hannes Reinecke <hare@suse.com>,
linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org
Subject: Re: [PATCH 1/4] softirq: implement IRQ flood detection mechanism
Date: Wed, 28 Aug 2019 06:58:30 +0800 [thread overview]
Message-ID: <20190827225827.GA5263@ming.t460p> (raw)
In-Reply-To: <alpine.DEB.2.21.1908271633450.1939@nanos.tec.linutronix.de>
On Tue, Aug 27, 2019 at 04:42:02PM +0200, Thomas Gleixner wrote:
> On Tue, 27 Aug 2019, Ming Lei wrote:
> > +/*
> > + * Update average irq interval with the Exponential Weighted Moving
> > + * Average(EWMA)
> > + */
> > +static void irq_update_interval(void)
> > +{
> > +#define IRQ_INTERVAL_EWMA_WEIGHT 128
> > +#define IRQ_INTERVAL_EWMA_PREV_FACTOR 127
> > +#define IRQ_INTERVAL_EWMA_CURR_FACTOR (IRQ_INTERVAL_EWMA_WEIGHT - \
> > + IRQ_INTERVAL_EWMA_PREV_FACTOR)
>
> Please do not stick defines into a function body. That's horrible.
OK.
>
> > +
> > + int cpu = raw_smp_processor_id();
> > + struct irq_interval *inter = per_cpu_ptr(&avg_irq_interval, cpu);
> > + u64 delta = sched_clock_cpu(cpu) - inter->last_irq_end;
>
> Why are you doing that raw_smp_processor_id() dance? The call site has
> interrupts and preemption disabled.
OK, will change to __smp_processor_id().
>
> Also how is that supposed to work when sched_clock is jiffies based?
Good catch, looks ktime_get_ns() is needed.
>
> > + inter->avg = (inter->avg * IRQ_INTERVAL_EWMA_PREV_FACTOR +
> > + delta * IRQ_INTERVAL_EWMA_CURR_FACTOR) /
> > + IRQ_INTERVAL_EWMA_WEIGHT;
>
> We definitely are not going to have a 64bit multiplication and division on
> every interrupt. Asided of that this breaks 32bit builds all over the place.
I will convert the above into add/subtract/shift only.
thanks,
Ming
next prev parent reply other threads:[~2019-08-27 22:59 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-27 8:53 [PATCH 0/4] genirq/nvme: add IRQF_RESCUE_THREAD for avoiding IRQ flood Ming Lei
2019-08-27 8:53 ` [PATCH 1/4] softirq: implement IRQ flood detection mechanism Ming Lei
2019-08-27 14:42 ` Thomas Gleixner
2019-08-27 16:19 ` Thomas Gleixner
2019-08-27 23:04 ` Ming Lei
2019-08-27 23:12 ` Thomas Gleixner
2019-08-27 22:58 ` Ming Lei [this message]
2019-08-27 23:09 ` Thomas Gleixner
2019-08-28 11:06 ` Ming Lei
2019-08-28 11:23 ` Thomas Gleixner
2019-08-28 13:50 ` Ming Lei
2019-08-28 14:07 ` Thomas Gleixner
2019-09-03 3:30 ` Ming Lei
2019-09-03 3:30 ` Ming Lei
2019-09-03 5:59 ` Daniel Lezcano
2019-09-03 5:59 ` Daniel Lezcano
2019-09-03 6:31 ` Ming Lei
2019-09-03 6:31 ` Ming Lei
2019-09-03 6:40 ` Daniel Lezcano
2019-09-03 6:40 ` Daniel Lezcano
2019-09-03 7:28 ` Ming Lei
2019-09-03 7:28 ` Ming Lei
2019-09-03 7:50 ` Daniel Lezcano
2019-09-03 7:50 ` Daniel Lezcano
2019-09-03 9:30 ` Ming Lei
2019-09-03 9:30 ` Ming Lei
2019-09-04 17:07 ` Bart Van Assche
2019-09-04 17:07 ` Bart Van Assche
2019-09-04 17:31 ` Daniel Lezcano
2019-09-04 17:31 ` Daniel Lezcano
2019-09-04 17:38 ` Bart Van Assche
2019-09-04 17:38 ` Bart Van Assche
2019-09-04 18:02 ` Peter Zijlstra
2019-09-04 18:02 ` Peter Zijlstra
2019-09-04 19:47 ` Bart Van Assche
2019-09-04 19:47 ` Bart Van Assche
2019-09-05 9:11 ` Ming Lei
2019-09-05 9:11 ` Ming Lei
2019-09-05 9:06 ` Ming Lei
2019-09-05 9:06 ` Ming Lei
2019-09-05 10:37 ` Daniel Lezcano
2019-09-05 10:37 ` Daniel Lezcano
2019-09-06 1:22 ` Long Li
2019-09-06 1:22 ` Long Li
2019-09-06 4:36 ` Daniel Lezcano
2019-09-06 4:36 ` Daniel Lezcano
2019-09-06 4:44 ` Long Li
2019-09-06 4:44 ` Long Li
2019-09-06 1:48 ` Ming Lei
2019-09-06 1:48 ` Ming Lei
2019-09-06 5:14 ` Daniel Lezcano
2019-09-06 5:14 ` Daniel Lezcano
2019-09-06 18:30 ` Sagi Grimberg
2019-09-06 18:30 ` Sagi Grimberg
2019-09-06 18:52 ` Keith Busch
2019-09-06 18:52 ` Keith Busch
2019-09-07 0:01 ` Ming Lei
2019-09-07 0:01 ` Ming Lei
2019-09-10 3:10 ` Sagi Grimberg
2019-09-10 3:10 ` Sagi Grimberg
2019-09-18 0:00 ` Long Li
2019-09-18 0:00 ` Long Li
2019-09-20 17:14 ` Sagi Grimberg
2019-09-20 17:14 ` Sagi Grimberg
2019-09-20 19:12 ` Long Li
2019-09-20 19:12 ` Long Li
2019-09-20 20:45 ` Sagi Grimberg
2019-09-20 20:45 ` Sagi Grimberg
2019-09-24 0:57 ` Long Li
2019-09-24 0:57 ` Long Li
2019-09-18 14:37 ` Ming Lei
2019-09-18 14:37 ` Ming Lei
2019-09-20 17:09 ` Sagi Grimberg
2019-09-20 17:09 ` Sagi Grimberg
2019-09-06 14:18 ` Keith Busch
2019-09-06 14:18 ` Keith Busch
2019-09-06 17:50 ` Long Li
2019-09-06 17:50 ` Long Li
2019-09-06 22:19 ` Ming Lei
2019-09-06 22:19 ` Ming Lei
2019-09-06 22:25 ` Keith Busch
2019-09-06 22:25 ` Keith Busch
2019-09-06 23:13 ` Ming Lei
2019-09-06 23:13 ` Ming Lei
2019-09-10 0:24 ` Ming Lei
2019-09-10 0:24 ` Ming Lei
2019-09-03 8:09 ` Thomas Gleixner
2019-09-03 8:09 ` Thomas Gleixner
2019-09-03 9:24 ` Ming Lei
2019-09-03 9:24 ` Ming Lei
2019-08-29 6:15 ` Long Li
2019-08-30 0:55 ` Ming Lei
2019-08-27 8:53 ` [PATCH 2/4] genirq: add IRQF_RESCUE_THREAD Ming Lei
2019-08-27 8:53 ` [PATCH 3/4] nvme: pci: pass IRQF_RESCURE_THREAD to request_threaded_irq Ming Lei
2019-08-27 9:06 ` Johannes Thumshirn
2019-08-27 9:09 ` Ming Lei
2019-08-27 9:12 ` Johannes Thumshirn
2019-08-27 14:34 ` Keith Busch
2019-08-27 14:44 ` Keith Busch
2019-08-27 15:10 ` Bart Van Assche
2019-08-28 1:45 ` Ming Lei
2019-08-27 8:53 ` [PATCH 4/4] genirq: use irq's affinity for threaded irq with IRQF_RESCUE_THREAD Ming Lei
2019-08-27 14:35 ` Keith Busch
2019-09-06 8:50 ` John Garry
2019-09-06 8:50 ` John Garry
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=20190827225827.GA5263@ming.t460p \
--to=ming.lei@redhat.com \
--cc=axboe@fb.com \
--cc=hare@suse.com \
--cc=hch@lst.de \
--cc=john.garry@huawei.com \
--cc=keith.busch@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=longli@microsoft.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=sagi@grimberg.me \
--cc=tglx@linutronix.de \
/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 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.