lkml.org 
[lkml]   [2009]   [Nov]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRE: [PATCH] cpufreq: fix conservative/ondemand behaviour with ignore_nice_load
>-----Original Message-----
>From: cpufreq-owner@vger.kernel.org
>[mailto:cpufreq-owner@vger.kernel.org] On Behalf Of Alexander Miller
>Sent: Friday, November 06, 2009 8:27 AM
>To: linux-kernel@vger.kernel.org
>Cc: cpufreq@vger.kernel.org; Dave Jones
>Subject: [PATCH] cpufreq: fix conservative/ondemand behaviour
>with ignore_nice_load
>
>Remove conversion of nice load to microseconds which caused addition
>of times measured in different units and thus unreasonable behaviour
>with both governors.

Can you describe the "unresonable behavior" you are seeing. Is it
with NO_HZ enabled or disabled?

I see there can be a problem with this code when NO_HZ is disabled.
But, the patch below is not the right solution as it will result in
Adding times in different units with NO_HZ enabled.

Thanks,
Venki

>
>Signed-off-by: Alexander Miller <Miller@fmi.uni-stuttgart.de>
>---
>diff -uprN
>linux-2.6.git/drivers/cpufreq/cpufreq_conservative.c
>linux/drivers/cpufreq/cpufreq_conservative.c
>--- linux-2.6.git/drivers/cpufreq/cpufreq_conservative.c
>2009-10-10 15:56:58.010595257 +0200
>+++ linux/drivers/cpufreq/cpufreq_conservative.c
>2009-10-10 20:56:52.194598889 +0200
>@@ -400,20 +400,10 @@ static void dbs_check_cpu(struct cpu_dbs
> j_dbs_info->prev_cpu_idle = cur_idle_time;
>
> if (dbs_tuners_ins.ignore_nice) {
>- cputime64_t cur_nice;
>- unsigned long cur_nice_jiffies;
>-
>- cur_nice =
>cputime64_sub(kstat_cpu(j).cpustat.nice,
>+ idle_time += (unsigned int) cputime64_sub(
>+ kstat_cpu(j).cpustat.nice,
> j_dbs_info->prev_cpu_nice);
>- /*
>- * Assumption: nice time between
>sampling periods will
>- * be less than 2^32 jiffies for 32 bit sys
>- */
>- cur_nice_jiffies = (unsigned long)
>-
>cputime64_to_jiffies64(cur_nice);
>-
> j_dbs_info->prev_cpu_nice =
>kstat_cpu(j).cpustat.nice;
>- idle_time += jiffies_to_usecs(cur_nice_jiffies);
> }
>
> if (unlikely(!wall_time || wall_time < idle_time))
>diff -uprN linux-2.6.git/drivers/cpufreq/cpufreq_ondemand.c
>linux/drivers/cpufreq/cpufreq_ondemand.c
>--- linux-2.6.git/drivers/cpufreq/cpufreq_ondemand.c
>2009-10-10 16:00:40.380595816 +0200
>+++ linux/drivers/cpufreq/cpufreq_ondemand.c 2009-10-10
>20:56:52.195596654 +0200
>@@ -488,20 +488,10 @@ static void dbs_check_cpu(struct cpu_dbs
> j_dbs_info->prev_cpu_idle = cur_idle_time;
>
> if (dbs_tuners_ins.ignore_nice) {
>- cputime64_t cur_nice;
>- unsigned long cur_nice_jiffies;
>-
>- cur_nice =
>cputime64_sub(kstat_cpu(j).cpustat.nice,
>+ idle_time += (unsigned int) cputime64_sub(
>+ kstat_cpu(j).cpustat.nice,
> j_dbs_info->prev_cpu_nice);
>- /*
>- * Assumption: nice time between
>sampling periods will
>- * be less than 2^32 jiffies for 32 bit sys
>- */
>- cur_nice_jiffies = (unsigned long)
>-
>cputime64_to_jiffies64(cur_nice);
>-
> j_dbs_info->prev_cpu_nice =
>kstat_cpu(j).cpustat.nice;
>- idle_time += jiffies_to_usecs(cur_nice_jiffies);
> }
>
> if (unlikely(!wall_time || wall_time < idle_time))
>--
>To unsubscribe from this list: send the line "unsubscribe cpufreq" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at http://vger.kernel.org/majordomo-info.html
>

\
 
 \ /
  Last update: 2009-11-10 20:41    [W:0.064 / U:0.416 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site