From: Valentin Schneider <valentin.schneider@arm.com>
To: Marc Zyngier <maz@kernel.org>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Thomas Gleixner <tglx@linutronix.de>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Vincenzo Frascino <vincenzo.frascino@arm.com>
Subject: Re: [RFC PATCH v2 00/10] irqchip/irq-gic: Optimize masking by leveraging EOImode=1
Date: Thu, 03 Jun 2021 16:32:41 +0100 [thread overview]
Message-ID: <878s3rezfq.mognet@arm.com> (raw)
In-Reply-To: <87tumhg9vm.mognet@arm.com>
On 01/06/21 11:25, Valentin Schneider wrote:
> On 27/05/21 12:17, Marc Zyngier wrote:
>> On Tue, 25 May 2021 18:32:45 +0100,
>> Valentin Schneider <valentin.schneider@arm.com> wrote:
>>> Benchmark
>>> +++++++++
>>>
>>> Finding a benchmark that leverages a force-threaded IRQ has proved to be
>>> somewhat of a pain, so I crafted my own. It's a bit daft, but so are most
>>> benchmarks (though this one might win a prize).
>>
>> I love it (and wrote similar hacks in my time)! :D
>
> Yay!
>
>> Can you put that up
>> somewhere so that I can run the same test on my own zoo and find out
>> how it fares?
>>
>
> The setup part is really fugly and I was too ashamed of it to link it in
> the cover letter; for ACPI I could simply use acpi_register_gsi() since
> that uses the right domain by default, but for DT I ended up adding a DT
> entry and a match table.
>
> I'll see about unifying this and I'll send it out your way.
Scratch the unification, but at least I cleaned up some of the
initialization horrors. Patches + benchmark module are at:
https://git.gitlab.arm.com/linux-arm/linux-vs.git -b mainline/irq/eoimodness-v2
Note: I re-ran that on Juno/eMAG to make sure I didn't bust anything, and
while the eMAG improvements are still there, now I get pretty much zilch on
the Juno :/
I use the below script to drive the testing
---
#!/bin/bash
get_irq_count () {
cat /proc/interrupts | grep irq-prod | awk '{ print $2; }'
}
for f in $(find /sys/devices/system/cpu/cpufreq/ -name "policy*"); do
echo "performance" > "$f"/scaling_governor
done
KTHREAD_PID=$(ps -aux | grep irq-prod/ | head -n 1 | awk '{ print $2; }')
taskset -pc 0 $KTHREAD_PID
for ((i=0; i < 20; i++)); do
base_val=$(get_irq_count)
now=$(date +%s%3N)
echo 1 > /sys/kernel/irq_prod/active
sleep 5
echo 0 > /sys/kernel/irq_prod/active
end=$(date +%s%3N)
end_val=$(get_irq_count)
delta=$((end_val - base_val))
duration=$((end - now))
echo $((delta / (duration / 1000))) > $1/$i
done
---
This gives you a file per iteration with irqs/sec in it, and you can
collate that however you wish - I use python + pandas:
---
#!/usr/bin/env python3
import pandas as pd
keys = ["tip", "patch"]
data = {k : [] for k in keys}
for i in range(20):
for k in keys:
with open("/path/to/results/{}/{}".format(k, i), "r") as fh:
data[k].append(int(fh.read()))
df = pd.DataFrame(data)
df_stats = df.describe(percentiles=[.5, .9, .99])
df_stats["delta"] = (df_stats["patch"] - df_stats["tip"]) / df_stats["tip"]
print(df_stats)
---
i.e.
<load tip/irq/core>
./bench_irq.sh tip
<load series>
./bench_irq.sh patch
./compare.py
next prev parent reply other threads:[~2021-06-03 15:32 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-25 17:32 [RFC PATCH v2 00/10] irqchip/irq-gic: Optimize masking by leveraging EOImode=1 Valentin Schneider
2021-05-25 17:32 ` [RFC PATCH v2 01/10] genirq: Add chip flag to denote automatic IRQ (un)masking Valentin Schneider
2021-05-25 17:32 ` [RFC PATCH v2 02/10] genirq: Define irq_ack() and irq_eoi() helpers Valentin Schneider
2021-05-27 10:55 ` Marc Zyngier
2021-05-27 10:58 ` Marc Zyngier
2021-06-01 10:25 ` Valentin Schneider
2021-05-25 17:32 ` [RFC PATCH v2 03/10] genirq: Employ ack_irq() and eoi_irq() where relevant Valentin Schneider
2021-05-25 17:32 ` [RFC PATCH v2 04/10] genirq: Add handle_strict_flow_irq() flow handler Valentin Schneider
2021-05-25 17:32 ` [RFC PATCH v2 05/10] genirq: Let purely flow-masked ONESHOT irqs through unmask_threaded_irq() Valentin Schneider
2021-05-25 17:32 ` [RFC PATCH v2 06/10] genirq: Don't mask IRQ within flow handler if IRQ is flow-masked Valentin Schneider
2021-05-25 17:32 ` [RFC PATCH v2 07/10] genirq, irq-gic-v3: Make NMI flow handlers use ->irq_ack() if available Valentin Schneider
2021-05-25 17:32 ` [RFC PATCH v2 08/10] irqchip/gic-v3-its: Use irq_chip_ack_parent() Valentin Schneider
2021-05-27 12:17 ` Marc Zyngier
2021-06-01 10:25 ` Valentin Schneider
2021-05-25 17:32 ` [RFC PATCH v2 09/10] irqchip/gic: Convert to handle_strict_flow_irq() Valentin Schneider
2021-05-27 12:21 ` Marc Zyngier
2021-06-01 10:25 ` Valentin Schneider
2021-06-15 15:20 ` Valentin Schneider
2021-05-25 17:32 ` [RFC PATCH v2 10/10] irqchip/gic-v3: " Valentin Schneider
2021-05-25 17:34 ` [RFC PATCH v2 00/10] irqchip/irq-gic: Optimize masking by leveraging EOImode=1 Valentin Schneider
2021-05-27 11:17 ` Marc Zyngier
2021-06-01 10:25 ` Valentin Schneider
2021-06-03 15:32 ` Valentin Schneider [this message]
2021-06-08 15:29 ` Marc Zyngier
2021-06-08 17:58 ` Lorenzo Pieralisi
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=878s3rezfq.mognet@arm.com \
--to=valentin.schneider@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=maz@kernel.org \
--cc=tglx@linutronix.de \
--cc=vincenzo.frascino@arm.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