Re: [PATCH] CPUFREQ : calculate delay after dbs_check_cpu

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Amit,

Thanks for this input about performance improvement.

For the powersave_bias mode, it's normal that you have some
performances improvement because we run freq_lo_jiffies in low freq
and freq_high_jiffies in high freq with  (freq_lo_jiffies +
freq_high_jiffies) = sample_rate whereas the duration was sample_rate
in low freq before.
you can also note that powersave_bias feature doesn't use the
sampling_down factor

Vincent

On 21 February 2011 10:38, Amit Kachhap <amit.kachhap@xxxxxxxxxx> wrote:
> Hi Vincent,
>
> I checked this patch and I can see some performance improvement in my
> arm platform also. So in your patch there are 2 changes. First one is
> for calculating delay after rate_mult is set, this can be tested with
> cpufreq-bench tool. For the second part which requires enabling power
> save bias , the cpufreq-bench does not do that. So I tested with one
> time setting of  powersave_bias parameter and here also there is some
> increase in performance. But ideally powersave mode should have more
> power saving and some compromise in performance.
>
> //Amit Daniel
>
> On 15 February 2011 04:41, Vincent Guittot <vincent.guittot@xxxxxxxxxx> wrote:
>> Hi,
>>
>> The ondemand delay value is calculated before calling dbs_check_cpu
>> which can lead to a delay value of sampling_rate*sampling_down_factor
>> but a frequency set to the lowest value. The main result is a slow
>> responsiveness during this period. This patch moves the calculation of
>> delay after the call of dbs_check_cpu. I have seen this problem when
>> testing cpufreq-bench on my Arm platform.
>>
>> Vincent
>>
>> On 7 February 2011 17:14, Vincent Guittot <vincent.guittot@xxxxxxxxxx> wrote:
>>> calculate ondemand delay after dbs_check_cpu call because it can
>>> modify rate_mult value
>>>
>>> use freq_lo_jiffies value for the sub sample period of powersave_bias mode
>>>
>>> Signed-off-by: Vincent Guittot <vincent.guittot@xxxxxxxxxx>
>>> ---
>>>  drivers/cpufreq/cpufreq_ondemand.c |   20 +++++++++++++-------
>>>  1 files changed, 13 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/drivers/cpufreq/cpufreq_ondemand.c
>>> b/drivers/cpufreq/cpufreq_ondemand.c
>>> index 58aa85e..44c2dba 100644
>>> --- a/drivers/cpufreq/cpufreq_ondemand.c
>>> +++ b/drivers/cpufreq/cpufreq_ondemand.c
>>> @@ -641,13 +641,7 @@ static void do_dbs_timer(struct work_struct *work)
>>>                container_of(work, struct cpu_dbs_info_s, work.work);
>>>        unsigned int cpu = dbs_info->cpu;
>>>        int sample_type = dbs_info->sample_type;
>>> -
>>> -       /* We want all CPUs to do sampling nearly on same jiffy */
>>> -       int delay = usecs_to_jiffies(dbs_tuners_ins.sampling_rate
>>> -               * dbs_info->rate_mult);
>>> -
>>> -       if (num_online_cpus() > 1)
>>> -               delay -= jiffies % delay;
>>> +       int delay;
>>>
>>>        mutex_lock(&dbs_info->timer_mutex);
>>>
>>> @@ -660,10 +654,22 @@ static void do_dbs_timer(struct work_struct *work)
>>>                        /* Setup timer for SUB_SAMPLE */
>>>                        dbs_info->sample_type = DBS_SUB_SAMPLE;
>>>                        delay = dbs_info->freq_hi_jiffies;
>>> +               } else {
>>> +                       /* We want all CPUs to do sampling nearly on
>>> +                        * same jiffy
>>> +                        */
>>> +                       delay = usecs_to_jiffies(dbs_tuners_ins.sampling_rate
>>> +                               * dbs_info->rate_mult);
>>> +
>>> +                       if (num_online_cpus() > 1)
>>> +                               delay -= jiffies % delay;
>>> +
>>>                }
>>> +
>>>        } else {
>>>                __cpufreq_driver_target(dbs_info->cur_policy,
>>>                        dbs_info->freq_lo, CPUFREQ_RELATION_H);
>>> +               delay = dbs_info->freq_lo_jiffies;
>>>        }
>>>        schedule_delayed_work_on(cpu, &dbs_info->work, delay);
>>>        mutex_unlock(&dbs_info->timer_mutex);
>>> --
>>> 1.7.1
>>>
>>
>> _______________________________________________
>> linaro-dev mailing list
>> linaro-dev@xxxxxxxxxxxxxxxx
>> http://lists.linaro.org/mailman/listinfo/linaro-dev
>>
>
--
To unsubscribe from this list: send the line "unsubscribe cpufreq" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Devel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Forum]     [Linux SCSI]

  Powered by Linux