2.6.27.10: CPU ondemand governor doesn't work well

From: Toralf Förster
Date: Sun Jan 04 2009 - 07:05:53 EST


Starting with kernel 2.6.27.10 I observed sometimes that my ThinkPad T41 stays
at CPU frequency of 600 MHz when I run a lot of processes with nice level 3
and few more at 19 - even if I have some foreground jobs which normally force
the CPU to go to at 1700 MHz
A typical scenario is to compile glibc at a Gentoo system mit "make -j 2" and
then run another make job at nice level 0 or try to start firefox (which
start time itself is OTOH slow enough even with 1.7 GHz). I can quantify this
observation with a quick&dirty command line like :

$> time factor 819734028463158891

I would expect a real value of 6-7 seconds and a user value of 5-6 seconds.
However when I used it 2 times in a row I got :

tfoerste@n22 ~ $ time factor 819734028463158891
819734028463158891: 3 273244676154386297

real 0m51.658s
user 0m15.691s
sys 0m0.013s

tfoerste@n22 ~ $ time factor 819734028463158891
819734028463158891: 3 273244676154386297

real 0m19.136s
user 0m6.944s
sys 0m0.044s

BTW during startup I set :

$>echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load

My system:

tfoerste@n22 ~ $ uname -a
Linux n22 2.6.27-gentoo-r7 #12 Sun Dec 28 18:26:57 CET 2008 i686 Intel(R)
Pentium(R) M processor 1700MHz GenuineIntel GNU/Linux

The appropriate kernel config values are :

tfoerste@n22 ~/devel/wireshark/docbook $ zgrep -e GOV -e
FREQ /proc/config.gz | grep -v '#'
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_STAT=m
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_X86_ACPI_CPUFREQ=m
CONFIG_CPU_IDLE_GOV_LADDER=y
CONFIG_CPU_IDLE_GOV_MENU=y

--
MfG/Sincerely

Toralf Förster
pgp finger print: 7B1A 07F4 EC82 0F90 D4C2 8936 872A E508 7DB6 9DA3

Attachment: signature.asc
Description: This is a digitally signed message part.