mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Zhou Ti (x2019cwm)" <x2019cwm@stfx.ca>
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Frederic Weisbecker <frederic@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Yunfeng Ye <yeyunfeng@huawei.com>,
	"Paul E . McKenney" <paulmck@kernel.org>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	Ingo Molnar <mingo@kernel.org>,
	Linux PM <linux-pm@vger.kernel.org>
Subject: Re: 回复: [PATCH 01/10] tick/nohz: Prevent tick_nohz_get_sleep_length() from returning negative value
Date: Thu, 25 Mar 2021 20:37:01 +0000	[thread overview]
Message-ID: <YTBPR01MB3262C64BEB4DBA0ED48F3168C4629@YTBPR01MB3262.CANPRD01.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <CAJZ5v0h2BZdj4ds1NUKUcdJ_WCZe-0EogE1k5qbJkoEGFkjJyw@mail.gmail.com>

On March 25, 2021 15:50, Rafael J. Wysocki wrote:
> On Thu, Mar 25, 2021 at 8:18 PM Zhou Ti (x2019cwm) <x2019cwm@stfx.ca> wrote:
> >
> > On March 25, 2021 14:56, Rafael J. Wysocki wrote:
> > > On Thursday, March 25, 2021 2:14:00 PM CET Frederic Weisbecker wrote:
> > > > On Tue, Mar 16, 2021 at 04:08:08PM +0000, Zhou Ti (x2019cwm) wrote:
> > > > > But I don't think it's a good idea to handle this in callers, because logically the function shouldn't return negative values. Returning 0 directly would allow idle governors to get another chance to select again.
> > > >
> > > > Hmm, I'm going to leave the last word to Rafael since cpuidle are the only
> > > > callers of this. In any case we need to fix it.
> > >
> > > Yes, we do.
> > >
> > > So I said that I preferred to address this in the callers and the reason why
> > > is because, for example, for the teo governor it would be a matter of using
> > > a different data type to store the tick_nohz_get_sleep_length() return value,
> > > like in the (untested) patch below.
> > >
> > > So at least in this case there is no need to add any new branches anywhere.
> > >
> > > I'm still not sure about menu, because it is more complicated, but even if
> > > that one needs an extra branch, that is a win already.
> >
> > I would like to point out the potential trouble that fixing this issue in the
> > callers could cause.
> >
> > 1. This function is called multiple times in menu governor and TEO
> > governor.
> 
> What do you mean by "multiple times"?
> 
> Each of the governors calls it once per cycle and its previous return
> value is not used in the next cycle at least in teo.

I remember a governor called this function twice in a cycle, I guess I remember 
wrong.

> 
> > I'm not sure that receiving results using signed integers is enough
> > to solve all the problems, in the worst case it may require increasing
> > the logical complexity of the code.
> 
> That is a valid concern, so it is a tradeoff between increasing the
> logical complexity of the code and adding branches to it.
> 
> > 2. This function is important for developing idle governor.
> > If the problem is not fixed in the function itself, then this potential
> > pitfall should be explicitly stated in the documentation.
> 
> That I can agree with.
> 
> > This is because
> > it is difficult to predict from the definition and naming of the function
> > that it might return a negative number. I actually discovered this anomaly
> > when I was doing data analysis on my own idle governor. For some idle control
> > algorithms, this exception return could lead to serious consequences,
> > because negative return logically won't happen.
> 
> Well, it's a matter of how to take the possible negative return value
> into account so it does not affect the result of the computations.

I think it is challenging for some algorithms to take negative return values 
into account properly. For TEO (and even menu), it is possible to 
solve the problem by just changing the way the data is received is because the 
learning mechanism for both algorithms is simple. 

One of the interesting things about the CPUIdle subsystem is that it is well 
suited to introduce machine learning and probabilistic statistical methods.
This means that many of the more complex and data-sensitive algorithms can 
potentially be explored. In the best case we will still need to add additional 
code complexity to a new algorithm.

It would reduce a lot of unnecessary considerations (for example, highlight 
this shortcoming in the documentation) if we could ensure that this function 
would work as it is logically defined. But I don't really understand 
how much of a burden adding an extra branch would impose, so I don't know if 
this tradeoff is worth it.

  reply	other threads:[~2021-03-25 20:37 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-11 12:36 [PATCH 00/10] tick/nohz updates Frederic Weisbecker
2021-03-11 12:36 ` [PATCH 01/10] tick/nohz: Prevent tick_nohz_get_sleep_length() from returning negative value Frederic Weisbecker
2021-03-16 12:21   ` Peter Zijlstra
2021-03-16 13:37     ` Frederic Weisbecker
2021-03-16 14:35       ` Peter Zijlstra
2021-03-16 14:53         ` Frederic Weisbecker
2021-03-16 15:26           ` Rafael J. Wysocki
2021-03-16 15:57             ` 回复: " Zhou Ti (x2019cwm)
2021-03-16 16:08               ` Zhou Ti (x2019cwm)
2021-03-16 16:25                 ` Peter Zijlstra
2021-03-17 21:49                   ` Zhou Ti (x2019cwm)
2021-03-25 13:14                 ` Frederic Weisbecker
2021-03-25 18:56                   ` Rafael J. Wysocki
2021-03-25 19:18                     ` Zhou Ti (x2019cwm)
2021-03-25 19:50                       ` Rafael J. Wysocki
2021-03-25 20:37                         ` Zhou Ti (x2019cwm) [this message]
2021-03-26 17:01                           ` Rafael J. Wysocki
2021-03-26 17:53                             ` Zhou Ti (x2019cwm)
2021-03-26 18:54                               ` Rafael J. Wysocki
2021-03-26 22:53                                 ` Zhou Ti (x2019cwm)
2021-03-29 12:44                                   ` Rafael J. Wysocki
2021-03-29 14:49                                     ` Zhou Ti (x2019cwm)
2021-03-11 12:37 ` [PATCH 02/10] tick/nohz: Add tick_nohz_full_this_cpu() Frederic Weisbecker
2021-03-16 12:28   ` Peter Zijlstra
2021-03-16 13:05     ` Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 03/10] tick/nohz: Conditionally restart tick on idle exit Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 04/10] tick/nohz: Remove superflous check for CONFIG_VIRT_CPU_ACCOUNTING_NATIVE Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 05/10] tick/nohz: Update idle_exittime on actual idle exit Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 06/10] timer: Report ignored local enqueue in nohz mode Frederic Weisbecker
2021-03-16 15:27   ` Peter Zijlstra
2021-03-25 13:07     ` Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 07/10] tick/nohz: Update nohz_full Kconfig help Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 08/10] tick/nohz: Only wakeup a single target cpu when kicking a task Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 09/10] tick/nohz: Change signal tick dependency to wakeup CPUs of member tasks Frederic Weisbecker
2021-03-11 12:37 ` [PATCH 10/10] tick/nohz: Kick only _queued_ task whose tick dependency is updated Frederic Weisbecker

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=YTBPR01MB3262C64BEB4DBA0ED48F3168C4629@YTBPR01MB3262.CANPRD01.PROD.OUTLOOK.COM \
    --to=x2019cwm@stfx.ca \
    --cc=frederic@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=rafael@kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=tglx@linutronix.de \
    --cc=yeyunfeng@huawei.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

all inboxes | Powered by JetHome®