All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thara Gopinath <thara.gopinath@linaro.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: mingo@redhat.com, ionela.voinescu@arm.com,
	vincent.guittot@linaro.org, rui.zhang@intel.com,
	edubezval@gmail.com, qperret@google.com,
	linux-kernel@vger.kernel.org, amit.kachhap@gmail.com,
	javi.merino@kernel.org, daniel.lezcano@linaro.org
Subject: Re: [Patch v4 2/6] sched: Add infrastructure to store and update instantaneous thermal pressure
Date: Wed, 30 Oct 2019 17:37:34 -0400	[thread overview]
Message-ID: <5DBA029E.8020508@linaro.org> (raw)
In-Reply-To: <20191028152135.GC4097@hirez.programming.kicks-ass.net>

Hello Peter,
Thanks for the review.


On 10/28/2019 11:21 AM, Peter Zijlstra wrote:
> On Tue, Oct 22, 2019 at 04:34:21PM -0400, Thara Gopinath wrote:
>> Add thermal.c and thermal.h files that provides interface
>> APIs to initialize, update/average, track, accumulate and decay
>> thermal pressure per cpu basis. A per cpu variable delta_capacity is
>> introduced to keep track of instantaneous per cpu thermal pressure.
>> Thermal pressure is the delta between maximum capacity and capped
>> capacity due to a thermal event.
> 
>> API trigger_thermal_pressure_average is called for periodic accumulate
>> and decay of the thermal pressure. It is to to be called from a
>> periodic tick function. This API passes on the instantaneous delta
>> capacity of a cpu to update_thermal_load_avg to do the necessary
>> accumulate, decay and average.
> 
>> API update_thermal_pressure is for the system to update the thermal
>> pressure by providing a capped frequency ratio.
> 
>> Considering, trigger_thermal_pressure_average reads delta_capacity and
>> update_thermal_pressure writes into delta_capacity, one can argue for
>> some sort of locking mechanism to avoid a stale value.
> 
>> But considering trigger_thermal_pressure_average can be called from a
>> system critical path like scheduler tick function, a locking mechanism
>> is not ideal. This means that it is possible the delta_capacity value
>> used to calculate average thermal pressure for a cpu can be
>> stale for upto 1 tick period.
> 
> Please use a blank line at the end of a paragraph.

Will do

> 
>> Signed-off-by: Thara Gopinath <thara.gopinath@linaro.org>
>> ---
> 
>>  include/linux/sched.h  |  8 ++++++++
>>  kernel/sched/Makefile  |  2 +-
>>  kernel/sched/thermal.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
>>  kernel/sched/thermal.h | 13 +++++++++++++
>>  4 files changed, 67 insertions(+), 1 deletion(-)
>>  create mode 100644 kernel/sched/thermal.c
>>  create mode 100644 kernel/sched/thermal.h
> 
> These are some tiny files, do these functions really need their own
> little files?

I will merge them  into fair.c. There will be update_thermal_pressure
that will be called from cpu_cooling or other relevant framework.
> 
> 
>> diff --git a/kernel/sched/thermal.c b/kernel/sched/thermal.c
>> new file mode 100644
>> index 0000000..0c84960
>> --- /dev/null
>> +++ b/kernel/sched/thermal.c
>> @@ -0,0 +1,45 @@
>> +// SPDX-License-Identifier: GPL-2.0
>> +/*
>> + * Scheduler Thermal Interactions
>> + *
>> + *  Copyright (C) 2018 Linaro, Inc., Thara Gopinath <thara.gopinath@linaro.org>
>> + */
>> +
>> +#include <linux/sched.h>
>> +#include "sched.h"
>> +#include "pelt.h"
>> +#include "thermal.h"
>> +
>> +static DEFINE_PER_CPU(unsigned long, delta_capacity);
>> +
>> +/**
>> + * update_thermal_pressure: Update thermal pressure
>> + * @cpu: the cpu for which thermal pressure is to be updated for
>> + * @capped_freq_ratio: capped max frequency << SCHED_CAPACITY_SHIFT / max freq
>> + *
>> + * capped_freq_ratio is normalized into capped capacity and the delta between
>> + * the arch_scale_cpu_capacity and capped capacity is stored in per cpu
>> + * delta_capacity.
>> + */
>> +void update_thermal_pressure(int cpu, u64 capped_freq_ratio)
>> +{
>> +	unsigned long __capacity, delta;
>> +
>> +	/* Normalize the capped freq ratio */
>> +	__capacity = (capped_freq_ratio * arch_scale_cpu_capacity(cpu)) >>
>> +							SCHED_CAPACITY_SHIFT;
>> +	delta = arch_scale_cpu_capacity(cpu) -  __capacity;
>> +	pr_debug("updating cpu%d thermal pressure to %lu\n", cpu, delta);
> 
> Surely we can do without the pr_debug() here?

Will remove. I had it while developing to check if the thermal pressure
is calculated correct.
> 
>> +	per_cpu(delta_capacity, cpu) = delta;
>> +}


-- 
Warm Regards
Thara

  reply	other threads:[~2019-10-30 21:37 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-22 20:34 [Patch v4 0/6] Introduce Thermal Pressure Thara Gopinath
2019-10-22 20:34 ` [Patch v4 1/6] sched/pelt.c: Add support to track thermal pressure Thara Gopinath
2019-10-31  9:47   ` Ionela Voinescu
2019-10-22 20:34 ` [Patch v4 2/6] sched: Add infrastructure to store and update instantaneous " Thara Gopinath
2019-10-28 15:21   ` Peter Zijlstra
2019-10-30 21:37     ` Thara Gopinath [this message]
2019-11-01 12:17   ` Dietmar Eggemann
2019-11-01 20:57     ` Thara Gopinath
2019-11-04 17:29       ` Dietmar Eggemann
2019-11-04 17:34         ` Vincent Guittot
2019-11-04 17:41           ` Dietmar Eggemann
2019-11-04 17:48             ` Vincent Guittot
2019-10-22 20:34 ` [Patch v4 3/6] sched/fair: Enable CFS periodic tick to update " Thara Gopinath
2019-10-28 15:24   ` Peter Zijlstra
2019-10-28 15:27     ` Peter Zijlstra
2019-10-30 21:41     ` Thara Gopinath
2019-10-31 16:11   ` Dietmar Eggemann
2019-10-31 16:46     ` Thara Gopinath
2019-10-22 20:34 ` [Patch v4 4/6] sched/fair: update cpu_capcity to reflect " Thara Gopinath
2019-10-23 12:28   ` Qais Yousef
2019-10-28 15:30     ` Peter Zijlstra
2019-10-31 10:53       ` Qais Yousef
2019-10-31 15:38         ` Dietmar Eggemann
2019-10-31 15:48           ` Vincent Guittot
2019-10-31 16:17             ` Dietmar Eggemann
2019-10-31 16:31               ` Vincent Guittot
2019-10-31 16:44                 ` Dietmar Eggemann
2019-10-31 16:03         ` Thara Gopinath
2019-10-31 16:56           ` Qais Yousef
2019-10-22 20:34 ` [Patch v4 5/6] thermal/cpu-cooling: Update thermal pressure in case of a maximum frequency capping Thara Gopinath
2019-10-28 15:33   ` Peter Zijlstra
2019-10-31 16:29   ` Dietmar Eggemann
2019-10-31 16:38     ` Vincent Guittot
2019-11-01 15:47       ` Ionela Voinescu
2019-11-01 21:04         ` Thara Gopinath
2019-11-04 14:41           ` Ionela Voinescu
2019-10-31 16:46     ` Thara Gopinath
2019-10-22 20:34 ` [Patch v4 6/6] sched: thermal: Enable tuning of decay period Thara Gopinath
2019-10-28 15:42   ` Peter Zijlstra
2019-11-04 16:12   ` Ionela Voinescu
2019-11-05 20:26     ` Thara Gopinath
2019-11-05 21:29       ` Ionela Voinescu
2019-10-29 15:34 ` [Patch v4 0/6] Introduce Thermal Pressure Daniel Lezcano
2019-10-31 10:07   ` Ionela Voinescu
2019-10-31 11:54     ` Daniel Lezcano
2019-10-31 12:57       ` Ionela Voinescu
2019-10-31 17:48         ` Daniel Lezcano
2019-10-31  9:44 ` Ionela Voinescu
2019-10-31 16:41   ` Thara Gopinath
2019-10-31 16:52     ` Thara Gopinath
2019-11-05 21:04     ` Ionela Voinescu

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=5DBA029E.8020508@linaro.org \
    --to=thara.gopinath@linaro.org \
    --cc=amit.kachhap@gmail.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=edubezval@gmail.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=vincent.guittot@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.