Re: [RFC 1/1] Weighted approach to gather and use history in TEO governor

From: Rafael J. Wysocki
Date: Wed May 13 2020 - 10:50:02 EST


On Wed, May 13, 2020 at 7:31 AM Pratik Sampat <psampat@xxxxxxxxxxxxx> wrote:
>
> Thanks for your comment.
>
>
> On 12/05/20 11:07 pm, Peter Zijlstra wrote:
> > Just a quick note..
> >
> > On Mon, May 11, 2020 at 07:40:55PM +0530, Pratik Rajesh Sampat wrote:
> >
> >> + /*
> >> + * Rearrange the weight distribution of the state, increase the weight
> >> + * by the LEARNING RATE % for the idle state that was supposed to be
> >> + * chosen and reduce by the same amount for rest of the states
> >> + *
> >> + * If the weights are greater than (100 - LEARNING_RATE) % or lesser
> >> + * than LEARNING_RATE %, do not increase or decrease the confidence
> >> + * respectively
> >> + */
> >> + for (i = 0; i < drv->state_count; i++) {
> >> + unsigned int delta;
> >> +
> >> + if (idx == -1)
> >> + break;
> >> + if (i == idx) {
> >> + delta = (LEARNING_RATE * cpu_data->state_mat[last_idx][i]) / 100;
> > 100 is a crap number to divide by as a computer. We bio-puddings happend
> > to have 10 digits, so 100 makes sense to us, but it does not to our
> > binary friends.
> >
> >
> Absolutely! I just wrote the code exactly the way I did the Math on paper,
> definitely need to figure out an optimal way of doing things.

There is no particular reason to use percent in computations at all.
You may as well use 1/1024 parts instead (and then use shifts instead
of divisions).