All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vincent Guittot <vincent.guittot@linaro.org>
To: Dietmar Eggemann <dietmar.eggemann@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Thara Gopinath <thara.gopinath@linaro.org>,
	Ingo Molnar <mingo@redhat.com>,
	Ionela Voinescu <ionela.voinescu@arm.com>,
	Zhang Rui <rui.zhang@intel.com>,
	Quentin Perret <qperret@google.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	viresh kumar <viresh.kumar@linaro.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Amit Kachhap <amit.kachhap@gmail.com>,
	Javi Merino <javi.merino@kernel.org>,
	Amit Kucheria <amit.kucheria@verdurent.com>
Subject: Re: [Patch v8 4/7] sched/fair: Enable periodic update of average thermal pressure
Date: Fri, 24 Jan 2020 16:45:13 +0100	[thread overview]
Message-ID: <CAKfTPtA-pr9y2MuwY8vTAy=m4beqdhNCek0fgdZP7u0JT8ojvA@mail.gmail.com> (raw)
In-Reply-To: <e0ede843-4cb8-83d8-708b-87d96b6eb1c3@arm.com>

On Fri, 24 Jan 2020 at 16:37, Dietmar Eggemann <dietmar.eggemann@arm.com> wrote:
>
> On 17/01/2020 16:39, Vincent Guittot wrote:
> > On Fri, 17 Jan 2020 at 15:55, Peter Zijlstra <peterz@infradead.org> wrote:
> >>
> >> On Fri, Jan 17, 2020 at 02:22:51PM +0100, Vincent Guittot wrote:
> >>> On Thu, 16 Jan 2020 at 16:15, Peter Zijlstra <peterz@infradead.org> wrote:
> >>
> >>>>
> >>>> That there indentation trainwreck is a reason to rename the function.
> >>>>
> >>>>         decayed = update_rt_rq_load_avg(now, rq, curr_class == &rt_sched_class) |
> >>>>                   update_dl_rq_load_avg(now, rq, curr_class == &dl_sched_class) |
> >>>>                   update_thermal_load_avg(rq_clock_task(rq), rq, thermal_pressure) |
> >>>>                   update_irq_load_avg(rq, 0);
> >>>>
> >>>> Is much better.
> >>>>
> >>>> But now that you made me look at that, I noticed it's using a different
> >>>> clock -- it is _NOT_ using now/rq_clock_pelt(), which means it'll not be
> >>>> in sync with the other averages.
> >>>>
> >>>> Is there a good reason for that?
> >>>
> >>> We don't need to apply frequency and cpu capacity invariance on the
> >>> thermal capping signal which is  what rq_clock_pelt does
> >>
> >> Hmm, I suppose that is true, and that really could've done with a
> >> comment. Now clock_pelt is sort-of in sync with clock_task, but won't it
> >> still give weird artifacts by having it on a slightly different basis?
> >
> > No we should not. Weird artifacts happens when we
> > add/subtract/propagate signals between each other and then apply pelt
> > algorithm on the results. In the case of thermal signal, we only add
> > it to others to update cpu_capacity but pelt algo is then not applied
> > on it. The error because of some signals being at segment boundaries
> > whereas others are not, is limited to 2% and doesn't accumulate over
> > time.
> >
> >>
> >> Anyway, looking at this, would it make sense to remove the @now argument
> >> from update_*_load_avg()? All those functions already take @rq, and
> >> rq_clock_*() are fairly trivial inlines.
> >
> > TBH I was thinking of doing the opposite for update_irq_load_avg which
> > hides the clock that is used for irq_avg. This helps to easily
> > identify which signals use the exact same clock and can be mixed to
> > create a new pelt signal and which can't
>
> The 'now' argument is one thing but why not:
>
> -int update_thermal_load_avg(u64 now, struct rq *rq, u64 capacity)
> +int update_thermal_load_avg(u64 now, struct rq *rq)
>  {
> +       u64 capacity = arch_cpu_thermal_pressure(cpu_of(rq));
> +
>         if (___update_load_sum(now, &rq->avg_thermal,
>
> This would make the call-sites __update_blocked_others() and
> task_tick(_fair)() cleaner.

I prefer to keep the capacity as argument. This is more aligned with
others that provides the value of the signal to apply

>
> I guess the argument is not to pollute pelt.c. But it already contains

you've got it. I don't want to pollute the pelt.c file with things not
related to pelt but thermal as an example.

> arch_scale_[freq|cpu]_capacity() for irq.
>
>

  reply	other threads:[~2020-01-24 15:45 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-14 19:57 [Patch v8 0/7] Introduce Thermal Pressure Thara Gopinath
2020-01-14 19:57 ` [Patch v8 1/7] sched/pelt: Add support to track thermal pressure Thara Gopinath
2020-01-16 15:17   ` Peter Zijlstra
2020-01-23 19:15     ` Dietmar Eggemann
2020-01-24 19:07       ` Thara Gopinath
2020-01-27  9:28         ` Dietmar Eggemann
2020-01-28 13:32           ` Thara Gopinath
2020-01-28 16:15             ` Dietmar Eggemann
2020-02-13 12:03   ` Amit Kucheria
2020-02-13 12:31     ` Amit Kucheria
2020-01-14 19:57 ` [Patch v8 2/7] sched/topology: Add hook to read per cpu " Thara Gopinath
2020-01-14 19:57 ` [Patch v8 3/7] arm,arm64,drivers:Add infrastructure to store and update instantaneous " Thara Gopinath
2020-01-14 19:57 ` [Patch v8 4/7] sched/fair: Enable periodic update of average " Thara Gopinath
2020-01-16 15:15   ` Peter Zijlstra
2020-01-17 11:40     ` Quentin Perret
2020-01-17 12:31       ` Peter Zijlstra
2020-01-17 13:17         ` Vincent Guittot
2020-01-17 13:45           ` Quentin Perret
2020-01-17 13:22     ` Vincent Guittot
2020-01-17 14:55       ` Peter Zijlstra
2020-01-17 15:39         ` Vincent Guittot
2020-01-24 15:37           ` Dietmar Eggemann
2020-01-24 15:45             ` Vincent Guittot [this message]
2020-01-27 12:09               ` Dietmar Eggemann
2020-01-27 15:15                 ` Vincent Guittot
2020-01-29 15:41                   ` Dietmar Eggemann
2020-01-30  9:49                     ` Vincent Guittot
2020-01-17 20:20     ` Thara Gopinath
2020-01-14 19:57 ` [Patch v8 5/7] sched/fair: update cpu_capacity to reflect " Thara Gopinath
2020-01-14 19:57 ` [Patch v8 6/7] thermal/cpu-cooling: Update thermal pressure in case of a maximum frequency capping Thara Gopinath
2020-01-14 19:57 ` [Patch v8 7/7] sched/fair: Enable tuning of decay period Thara Gopinath
2020-01-17 11:47   ` Quentin Perret
2020-01-17 15:45     ` Thara Gopinath

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='CAKfTPtA-pr9y2MuwY8vTAy=m4beqdhNCek0fgdZP7u0JT8ojvA@mail.gmail.com' \
    --to=vincent.guittot@linaro.org \
    --cc=amit.kachhap@gmail.com \
    --cc=amit.kucheria@verdurent.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=dietmar.eggemann@arm.com \
    --cc=ionela.voinescu@arm.com \
    --cc=javi.merino@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=qperret@google.com \
    --cc=rui.zhang@intel.com \
    --cc=thara.gopinath@linaro.org \
    --cc=viresh.kumar@linaro.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 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.