From: Lukasz Luba <lukasz.luba@arm.com>
To: Sylwester Nawrocki <s.nawrocki@samsung.com>
Cc: Krzysztof Kozlowski <krzk@kernel.org>,
Willy Wolff <willy.mh.wolff.ml@gmail.com>,
Chanwoo Choi <cw00.choi@samsung.com>,
MyungJoo Ham <myungjoo.ham@samsung.com>,
Kyungmin Park <kyungmin.park@samsung.com>,
Kukjin Kim <kgene@kernel.org>,
linux-pm@vger.kernel.org,
"linux-samsung-soc@vger.kernel.org"
<linux-samsung-soc@vger.kernel.org>,
linux-arm-kernel@lists.infradead.org,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: brocken devfreq simple_ondemand for Odroid XU3/4?
Date: Mon, 29 Jun 2020 12:41:54 +0100 [thread overview]
Message-ID: <cf460cc5-dbb1-efeb-3021-622ee5b0be45@arm.com> (raw)
In-Reply-To: <708feba7-6b11-4943-1073-a1b5e54b6283@samsung.com>
On 6/26/20 6:50 PM, Sylwester Nawrocki wrote:
> Hi Lukasz,
>
> On 25.06.2020 12:02, Lukasz Luba wrote:
>> Regarding the 'performance counters overflow interrupts' there is one
>> thing worth to keep in mind: variable utilization and frequency.
>> For example, in order to make a conclusion in algorithm deciding that
>> the device should increase or decrease the frequency, we fix the period
>> of observation, i.e. to 500ms. That can cause the long delay if the
>> utilization of the device suddenly drops. For example we set an
>> overflow threshold to value i.e. 1000 and we know that at 1000MHz
>> and full utilization (100%) the counter will reach that threshold
>> after 500ms (which we want, because we don't want too many interrupts
>> per sec). What if suddenly utilization drops to 2% (i.e. from 5GB/s
>> to 250MB/s (what if it drops to 25MB/s?!)), the counter will reach the
>> threshold after 50*500ms = 25s. It is impossible just for the counters
>> to predict next utilization and adjust the threshold.
>
> Agreed, that's in case when we use just the performance counter (PMCNT)
> overflow interrupts. In my experiments I used the (total) cycle counter
> (CCNT) overflow interrupts. As that counter is clocked with fixed rate
> between devfreq updates it can be used as a timer by pre-loading it with
> initial value depending on current bus frequency. But we could as well
> use some reliable system timer mechanism to generate periodic events.
> I was hoping to use the cycle counter to generate low frequency monitor
> events and the actual performance counters overflow interrupts to detect
> any sudden changes of utilization. However, it seems it cannot be done
> with as simple performance counters HW architecture as on Exynos4412.
> It looks like on Exynos5422 we have all what is needed, there is more
> flexibility in selecting the counter source signal, e.g. each counter
> can be a clock cycle counter or can count various bus events related to
> actual utilization. Moreover, we could configure the counter gating period
> and alarm interrupts are available for when the counter value drops below
> configured MIN threshold or exceeds configured MAX value.
I see. I don't have TRM for Exynos5422 so couldn't see that. I also
have to keep in mind other platforms which might not have this feature.
>
> So it should be possible to configure the HW to generate the utilization
> monitoring events without excessive continuous CPU intervention.
I agree, that would be desirable especially for low load in the system.
> But I'm rather not going to work on the Exynos5422 SoC support at the moment.
I see.
>
>> To address that, we still need to have another mechanism (like watchdog)
>> which will be triggered just to check if the threshold needs adjustment.
>> This mechanism can be a local timer in the driver or a framework
>> timer running kind of 'for loop' on all this type of devices (like
>> the scheduled workqueue). In both cases in the system there will be
>> interrupts, timers (even at workqueues) and scheduling.
>> The approach to force developers to implement their local watchdog
>> timers (or workqueues) in drivers is IMHO wrong and that's why we have
>> frameworks.
>
> Yes, it should be also possible in the framework to use the counter alarm
> events where the hardware is advanced enough, in order to avoid excessive
> SW polling.
Looks promising, but that would need more plumbing I assume.
Regards,
Lukasz
>
> --
> Regards,
> Sylwester
>
next prev parent reply other threads:[~2020-06-29 21:25 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-23 16:47 brocken devfreq simple_ondemand for Odroid XU3/4? Willy Wolff
2020-06-23 19:02 ` Krzysztof Kozlowski
2020-06-23 19:11 ` Krzysztof Kozlowski
2020-06-24 8:01 ` Willy Wolff
2020-06-24 8:14 ` Krzysztof Kozlowski
2020-06-24 8:52 ` Willy Wolff
2020-06-24 10:32 ` Lukasz Luba
2020-06-24 11:18 ` Kamil Konieczny
2020-06-24 12:06 ` Krzysztof Kozlowski
2020-06-24 13:03 ` Lukasz Luba
2020-06-24 13:13 ` Krzysztof Kozlowski
2020-06-24 13:42 ` Lukasz Luba
2020-06-24 15:11 ` Sylwester Nawrocki
2020-06-25 10:02 ` Lukasz Luba
2020-06-25 11:30 ` Kamil Konieczny
2020-06-25 12:02 ` Lukasz Luba
2020-06-25 12:12 ` Kamil Konieczny
2020-06-26 11:22 ` Bartlomiej Zolnierkiewicz
2020-06-29 1:43 ` Chanwoo Choi
2020-06-29 11:52 ` Lukasz Luba
2020-07-01 15:48 ` Willy Wolff
2020-06-29 11:34 ` Lukasz Luba
2020-06-26 17:50 ` Sylwester Nawrocki
2020-06-29 11:41 ` Lukasz Luba [this message]
2020-06-29 1:52 ` Chanwoo Choi
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=cf460cc5-dbb1-efeb-3021-622ee5b0be45@arm.com \
--to=lukasz.luba@arm.com \
--cc=cw00.choi@samsung.com \
--cc=kgene@kernel.org \
--cc=krzk@kernel.org \
--cc=kyungmin.park@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=myungjoo.ham@samsung.com \
--cc=s.nawrocki@samsung.com \
--cc=willy.mh.wolff.ml@gmail.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).