* [PATCH][1/2] ondemand governor cleanup
@ 2005-03-06 18:41 Eric Piel
0 siblings, 0 replies; only message in thread
From: Eric Piel @ 2005-03-06 18:41 UTC (permalink / raw)
To: Pallipadi, Venkatesh; +Cc: cpufreq
[-- Attachment #1: Type: text/plain, Size: 562 bytes --]
Hello,
Here is a cleanup patch for the ondemand governor (as found in 2.6.11).
In dbs_check_cpu(), first the idle ticks of the current CPU are measured
and then the idle ticks of all the associated CPUs. This patch
factorises the code: all the idle ticks are measured in the same loop.
Note: this was tested only on a computer with one CPU, I don't own any
hardware with several CPUs which stick to the same frequency.
Eric
--
Ondemand governor cleanup, it factorises the idle ticks measurement.
Signed-off-by: Eric Piel <eric.piel@tremplin-utc.net>
--
[-- Attachment #2: ondemand-cleanup-factorise-idle-measurement-2.6.11.patch --]
[-- Type: text/x-patch, Size: 2487 bytes --]
--- linux-2.6.11/drivers/cpufreq/cpufreq_ondemand.c.bak 2005-02-06 23:35:41.000000000 +0100
+++ linux-2.6.11/drivers/cpufreq/cpufreq_ondemand.c 2005-03-06 19:04:12.000000000 +0100
@@ -223,7 +223,6 @@ static struct attribute_group dbs_attr_g
static void dbs_check_cpu(int cpu)
{
unsigned int idle_ticks, up_idle_ticks, down_idle_ticks;
- unsigned int total_idle_ticks;
unsigned int freq_down_step;
unsigned int freq_down_sampling_rate;
static int down_skip[NR_CPUS];
@@ -252,20 +251,11 @@ static void dbs_check_cpu(int cpu)
*/
/* Check for frequency increase */
- total_idle_ticks = kstat_cpu(cpu).cpustat.idle +
- kstat_cpu(cpu).cpustat.iowait;
- idle_ticks = total_idle_ticks -
- this_dbs_info->prev_cpu_idle_up;
- this_dbs_info->prev_cpu_idle_up = total_idle_ticks;
-
-
+ idle_ticks = UINT_MAX;
for_each_cpu_mask(j, policy->cpus) {
- unsigned int tmp_idle_ticks;
+ unsigned int tmp_idle_ticks, total_idle_ticks;
struct cpu_dbs_info_s *j_dbs_info;
- if (j == cpu)
- continue;
-
j_dbs_info = &per_cpu(cpu_dbs_info, j);
/* Check for frequency increase */
total_idle_ticks = kstat_cpu(j).cpustat.idle +
@@ -287,7 +277,7 @@ static void dbs_check_cpu(int cpu)
__cpufreq_driver_target(policy, policy->max,
CPUFREQ_RELATION_H);
down_skip[cpu] = 0;
- this_dbs_info->prev_cpu_idle_down = total_idle_ticks;
+ this_dbs_info->prev_cpu_idle_down = this_dbs_info->prev_cpu_idle_up;
return;
}
@@ -296,19 +286,11 @@ static void dbs_check_cpu(int cpu)
if (down_skip[cpu] < dbs_tuners_ins.sampling_down_factor)
return;
- total_idle_ticks = kstat_cpu(cpu).cpustat.idle +
- kstat_cpu(cpu).cpustat.iowait;
- idle_ticks = total_idle_ticks -
- this_dbs_info->prev_cpu_idle_down;
- this_dbs_info->prev_cpu_idle_down = total_idle_ticks;
-
+ idle_ticks = UINT_MAX;
for_each_cpu_mask(j, policy->cpus) {
- unsigned int tmp_idle_ticks;
+ unsigned int tmp_idle_ticks, total_idle_ticks;
struct cpu_dbs_info_s *j_dbs_info;
- if (j == cpu)
- continue;
-
j_dbs_info = &per_cpu(cpu_dbs_info, j);
/* Check for frequency increase */
total_idle_ticks = kstat_cpu(j).cpustat.idle +
@@ -330,7 +312,7 @@ static void dbs_check_cpu(int cpu)
down_idle_ticks = (100 - dbs_tuners_ins.down_threshold) *
sampling_rate_in_HZ(freq_down_sampling_rate);
- if (idle_ticks > down_idle_ticks ) {
+ if (idle_ticks > down_idle_ticks) {
freq_down_step = (5 * policy->max) / 100;
/* max freq cannot be less than 100. But who knows.... */
[-- Attachment #3: Type: text/plain, Size: 147 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@lists.linux.org.uk
http://lists.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-03-06 18:41 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-06 18:41 [PATCH][1/2] ondemand governor cleanup Eric Piel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox