The conservative governor ignores all but the last CPU when taking decisions

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

 



Hi,

I am running 2.6.32 SMP on a single Athlon 64 X2 (both cores share the same
frequency).

I observe that the convervative governor ignores the load of the first core
when taking frequency increase decisions. On an idle system:
Running "taskset 2 bash -c 'while ((1));do :;done'"
    results in an immediate frequency increase.
Running "taskset 1 bash -c 'while ((1));do :;done'"
    never increases the frequency.
Running "taskset 3 bash -c 'while ((1));do :;done'"
    increases the frequency after a random delay.

With the ondemand governor the frequency increases immediately in all 3 cases.

Looking at cpufreq_conservative.c, the load is computed for all CPUs but they
are trashed and only the last one prevails:
static void dbs_check_cpu(struct cpu_dbs_info_s *this_dbs_info)
{
	unsigned int load = 0;
	...
	for_each_cpu(j, policy->cpus) {
		unsigned int idle_time, wall_time;
		...
		load = 100 * (wall_time - idle_time) / wall_time;
	}
	...
	if (load > dbs_tuners_ins.up_threshold) {
	...

(same code in 2.6.34-rc2)

Jean-Christian

--
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