From: Mete Durlu <meted@linux.ibm.com>
To: Christian Loehle <christian.loehle@arm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Anna-Maria Behnsen <anna-maria@linutronix.de>,
Frederic Weisbecker <frederic@kernel.org>,
Ingo Molnar <mingo@kernel.org>, Thomas Gleixner <tglx@kernel.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Daniel Lezcano <daniel.lezcano@kernel.org>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>,
Ilya Leoshkevich <iii@linux.ibm.com>,
linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-pm@vger.kernel.org
Subject: Re: [PATCH v2 0/5] s390/idle: CPU idle driver
Date: Wed, 10 Jun 2026 22:23:56 +0200 [thread overview]
Message-ID: <93743121-2f6f-441b-8675-4eaa92647b4d@linux.ibm.com> (raw)
In-Reply-To: <0e6ff23c-b509-40eb-87f3-7b04fb066edf@arm.com>
On 6/9/26 5:47 PM, Christian Loehle wrote:
> On 6/9/26 14:24, Mete Durlu wrote:
>> v1 -> v2:
>>
>> * Add idle driver enteries to MAINTAINERS file (Christian Loehle)
>> * Remove extra line break left in drivers/cpuidle/Kconfig.s390
>> (Christian Loehle)
>>
>> This patch series introduces a CPU idle driver for s390
>> architecture that leverages the existing cpu idle infrastructure and
>> TEO (Timer Events Oriented) governor to optimize idle state selection
>> based on timer events and interrupt patterns.
>
> So if (according to v1) there's no data (yet) that teo is much preferred,
> I would remove all mentions of it in code and patch descriptions?
> A cpuidle driver requiring a specific governor sort-of violates the
> abstraction.
True, s/TEO governor/idle governor/g + s/TEO/idle governor/g should
be good enough.
> In case teo does work much better for you, which I wouldn't doubt for
> a second from what your system looks like, it would be nice to present
> some data on it. Additionally I think setting it in the defconfig alone
> is probably enough?
>
I ran a quick menu vs teo run on an LPAR.
There was no significant change between the results of the benchmarks
except for slightly higher cpu utilization when using menu governor. I
can put it down to the cover letter. The only noticeable change is on my
micro benchmark where I use epoll_wait() to make two threads on
different cores ping each other.
micro-benchmark | teo | menu
-------------------------------------
avg time | ~21.6sec | ~24.3sec
Idle framework tries to find the specified governor in the driver struct
but if it can't find it or no governor was specified it uses the next
available one, so setting teo on defconfig and disabling rest of the
governors can be good enough to pick teo.
>> - Configuration
>> -----------------------------------------------------------------------
>>
>> Idle state parameters are tuned per hypervisor type after benchmarks:
>>
>> **LPAR:**
>> - Polling: 5us target residency, 0us exit latency
>> - EW: 5us target residency, 5us exit latency
>>
>> **KVM/z/VM:**
>> - Polling: 1us target residency, 0us exit latency
>> - EW: 1us target residency, 1us exit latency
>>
> I think this would also be useful in cpuidle-s390.c in particular the
> different residency+latency values for LPAR and KVM/z/VM and what they aim
> to achieve for you.
We can put down a comment like below;
/*
* After various benchmark runs the tuneables for idle driver has shown
* the best performance with the following values;
* for LPAR:
* - Polling: 5us target residency, 0us exit latency
* - EW: 5us target residency, 5us exit latency
*
* for KVM/z/VM:
* - Polling: 1us target residency, 0us exit latency
* - EW: 1us target residency, 1us exit latency
*/
Is that what you are looking for or something more extensive to cover
what sort of behavior it causes and why it benefits the performance?
I wouldn't really like to put down lengthy comments here to be honest.
> Additionally polling is initialised to 0/0 by poll_state.c, so I don't know
> where you're taking these values from?
Having a look at the implementation of poll_idle() in poll_state.c.
The polling time limit (target_residency) is acquired from
cpuidle_poll_time(), which tries to find an enabled state deeper than
polling state and returns its target_residency. Since we only have two
states, it automatically means EW state's target_residency, or
IDLE_POLL_MAX if it is disabled.
If I am not mistaken governor also uses the next enabled state
to calculate the target_residency of the polling state.
next prev parent reply other threads:[~2026-06-10 20:24 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-09 13:24 [PATCH v2 0/5] s390/idle: CPU idle driver Mete Durlu
2026-06-09 13:24 ` [PATCH v2 1/5] s390/tick: Remove CIF_NOHZ_DELAY flag Mete Durlu
2026-06-09 13:24 ` [PATCH v2 2/5] tick: Remove arch_needs_cpu Mete Durlu
2026-06-09 15:16 ` Thomas Gleixner
2026-06-09 13:24 ` [PATCH v2 3/5] s390: Enable TIF_POLLING_NRFLAG Mete Durlu
2026-06-09 13:24 ` [PATCH v2 4/5] s390/idle: Introduce cpuidle for s390 Mete Durlu
2026-06-09 13:24 ` [PATCH v2 5/5] s390/configs: Enable cpuidle driver on s390 Mete Durlu
2026-06-09 14:11 ` [PATCH v2 0/5] s390/idle: CPU idle driver Heiko Carstens
2026-06-09 15:47 ` Christian Loehle
2026-06-10 20:23 ` Mete Durlu [this message]
2026-06-15 12:24 ` Mete Durlu
2026-06-17 7:15 ` Christian Loehle
2026-06-17 20:08 ` Mete Durlu
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=93743121-2f6f-441b-8675-4eaa92647b4d@linux.ibm.com \
--to=meted@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=anna-maria@linutronix.de \
--cc=borntraeger@linux.ibm.com \
--cc=christian.loehle@arm.com \
--cc=daniel.lezcano@kernel.org \
--cc=frederic@kernel.org \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=iii@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=rafael@kernel.org \
--cc=svens@linux.ibm.com \
--cc=tglx@kernel.org \
/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