lkml.org 
[lkml]   [2016]   [Mar]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v4 7/7] cpufreq: schedutil: New governor based on scheduler utilization data
    On Wed, Mar 16, 2016 at 03:59:18PM +0100, Rafael J. Wysocki wrote:

    > +static unsigned int get_next_freq(struct cpufreq_policy *policy,
    > + unsigned long util, unsigned long max)
    > +{
    > + unsigned int freq = arch_scale_freq_invariant() ?
    > + policy->cpuinfo.max_freq : policy->cur;
    > +
    > + return (freq + (freq >> 2)) * util / max;
    > +}
    > +
    > +static void sugov_update_single(struct update_util_data *hook, u64 time,
    > + unsigned long util, unsigned long max)
    > +{
    > + struct sugov_cpu *sg_cpu = container_of(hook, struct sugov_cpu, update_util);
    > + struct sugov_policy *sg_policy = sg_cpu->sg_policy;
    > + struct cpufreq_policy *policy = sg_policy->policy;
    > + unsigned int next_f;
    > +
    > + if (!sugov_should_update_freq(sg_policy, time))
    > + return;
    > +
    > + next_f = util <= max ?
    > + get_next_freq(policy, util, max) : policy->cpuinfo.max_freq;

    I'm not sure that is correct, would not something like this be more
    accurate?

    if (util > max)
    util = max;
    next_f = get_next_freq(policy, util, max);

    After all, if we clip util we will still only increment to the next freq
    with our multiplication factor.

    Hmm, or was this meant to deal with the DL/RT stuff?

    Would then not something like:

    /* ULONG_MAX is used to force max_freq for Real-Time policies */
    if (util == ULONG_MAX) {
    next_f = policy->cpuinfo.max_freq;
    } else {
    if (util > max)
    util = max;
    next_f = get_next_freq(policy, util, max);
    }

    Be clearer?

    > + sugov_update_commit(sg_policy, time, next_f);
    > +}

    \
     
     \ /
      Last update: 2016-03-16 19:01    [W:4.125 / U:0.348 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site