Thread: [Cpufreqd-devel] cpufreqd stuck at 800mhz yet cpufreq working fine
Brought to you by:
mattia-san
From: tehownt t. <te...@gm...> - 2008-11-06 04:57:08
|
So here's the little story/mess: I have that XPS M1330 running cpufreq successfully in Ubuntu 8.10 kernel 2.6.27-7-generic with ondemand, performance, userspace and conservative governors available. I've also got cpufreq_acpi and speedstep-centrino modules correctly loaded. I've been using a simple cpufreq 'ondemand' setup that comes with ubuntu stock without any problems, ( i.e. choses between 800mhz and 2.4ghz depending on load) but I wanted to make it more "intelligent", i.e. switch from a 'performance' running at 2.4ghz when plugged in and when running on battery, keep the original 'ondemand' (800000-2400000) mode. I thus installed cpufreqd 2.3.3-1 (from the repos), reading somewhere that it was more efficient than laptop_mode scripts and I thus checked that every section related to CPU control in laptop_mode config files was commented out. I used a very simple cpufreqd configuration (/etc/cpufreqd.conf) as follows, which is used by the daemon ran at startup (init.d): [General] pidfile=/var/run/cpufreqd.pid poll_interval=2 verbosity=5 [/General] [Profile] name=Performance High minfreq=2401000 maxfreq=2401000 policy=performance [/Profile] [Profile] name=Performance Low minfreq=1600000 maxfreq=1600000 policy=performance [/Profile] [Profile] name=Powersave High policy=ondemand maxfreq=2400000 minfreq=800000 [/Profile] [Profile] name=Powersave Low maxfreq=1600000 minfreq=800000 policy=ondemand [/Profile] [Rule] name=AC Rule ac=on # (on/off) profile=Performance High [/Rule] [Rule] name=AC Off - Medium Battery ac=off # (on/off) profile=Powersave High [/Rule] [Rule] name=CPU Too Hot acpi_temperature=65-100 cpu_interval=50-100 profile=Performance Low [/Rule] Now for the best part of this: cpufreqd has absolutely no problem detecting the AC on/off (eventhough it 'craps' the daemon.log with battery status access errors (searching energy_full and energy_now instead of charge_full and charge_now, but this should have been corrected in 2.3.3)) and it even manages to switch between different profiles, but when switching to the 'ondemand' profiles the CPU frequency is locked at 800mhz. i.e. the file /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq and scaling_min_freq contain '800000' and cpufreq-info states that both cores are in 'ondemand' governor mode that choses between 800mhz and 800mhz. analyzing CPU 1: driver: acpi-cpufreq CPUs which need to switch frequency at the same time: 0 1 hardware limits: 800 MHz - 2.40 GHz available frequency steps: 2.40 GHz, 2.40 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz, 800 MHz available cpufreq governors: ondemand, conservative, powersave, userspace, performance current policy: frequency should be within 800 MHz and 800 MHz. The governor "ondemand" may decide which speed to use within this range. current CPU frequency is 800 MHz (asserted by call to hardware). All my cpufreq settings seems to be fine, here's the contents of the files located in [I]/sys/devices/system/cpu/cpu*/cpufreq/[/I] : affected_cpus: 0 1 cpuinfo_max_freq: 2401000 cpuinfo_min_freq: 800000 related_cpus: 0 1 scaling_available_frequencies: 2401000 2400000 2000000 1600000 1200000 800000 scaling_available_governors: ondemand conservative powersave userspace performance scaling_cur_freq: 800000 scaling_driver: acpi-cpufreq scaling_governor: ondemand scaling_max_freq: 2401000 scaling_min_freq: 800000 scaling_setspeed: <unsupported> I've spent a lot of time trying to understand what the problem is, I've even tried to add an exec_post parameter in order to modify scaling_max_freq to 2401000 (or 2400000) at the end of the cpufreqd.conf profile, and according to the daemon.log it runs fine (exit 0) exec_post=echo 2401000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq or exec_post=cpufreq-set -g ondemand -u 2400000 but it doesn't change squat in the file (I've double-checked monitoring file modifications with fileschanged) eventhough it works when I do it manually. The strange thing is that if I restart the cpufreqd daemon when the laptop is unplugged, sometimes (yes only sometimes) the scaling_max_freq file is correctly set to 2400000, then if I replug the laptop it correctly switches to performance-2400000-2400000, but as soon as I unplug it it falls back into the ondemand-800000-800000 eventhough the config specifies otherwise. I haven't been able to set ondemand with max to 2400000 and min to either 1200000,1600000 or 2400000 for that matter. Here's a cat /proc/cpuinfo for the record: processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 23 model name : Intel(R) Core(TM)2 Duo CPU T8300 @ 2.40GHz stepping : 6 cpu MHz : 2401.000 cache size : 3072 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr sse4_1 lahf_lm ida bogomips : 4787.99 clflush size : 64 power management: and an lsmod | grep -i freq acpi_cpufreq 15500 1 cpufreq_ondemand 14988 0 cpufreq_stats 13188 0 cpufreq_conservative 14600 0 freq_table 12672 3 acpi_cpufreq,cpufreq_ondemand,cpufreq_stats cpufreq_powersave 9856 0 cpufreq_userspace 11396 0 processor 42156 4 acpi_cpufreq,thermal I've also tried to switch the /etc/default/cpufreqd config so as to use centrino-speedstep without success, and raising the verbosity level in cpufreqd doesn't help since there's no obvious 'error' per se and all the Profiles are apparently correctly configured (verified using cpufreqd-get). Has anyone any idea of what that mess is about ? Someone on ubuntu forums has suggested that I use powernowd, but I don't like this option since the powernowd project isn't that much maintainted anymore and the configuration is somewhat flaky compared to the extensive options of cpufreqd. |
From: Mattia D. <mal...@li...> - 2008-11-06 11:24:45
|
Hello, On Wed, Nov 05, 2008 at 11:57:02PM -0500, tehownt tehownt wrote: > So here's the little story/mess: > > I have that XPS M1330 running cpufreq successfully in Ubuntu 8.10 > kernel 2.6.27-7-generic with ondemand, performance, userspace and > conservative governors available. > > I've also got cpufreq_acpi and speedstep-centrino modules correctly loaded. you don't need both, cpufreq_acpi is the one you want generally > > I've been using a simple cpufreq 'ondemand' setup that comes with > ubuntu stock without any problems, ( i.e. choses between 800mhz and > 2.4ghz depending on load) but I wanted to make it more "intelligent", > i.e. switch from a 'performance' running at 2.4ghz when plugged in and > when running on battery, keep the original 'ondemand' (800000-2400000) > mode. > > I thus installed cpufreqd 2.3.3-1 (from the repos), reading somewhere so you're using a debian based distro, there is a 2.3.3-3 in debian at least that fixes a couple of bugs, one of which is the energy_* thing you mentioned. ... > i.e. the file /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq > and scaling_min_freq contain '800000' and cpufreq-info states that > both cores are in 'ondemand' governor mode that choses between 800mhz > and 800mhz. hmmmm... can you run cpufreqd with cpufreqd -D -V7 and check what it's doing? That is the best way to debug it, there will be a lot of output (feel free to send it here) it will give me some clues about what cpurfeqd is doing wrong even though there is no apparent error. Thanks. PS: I also read the -user ml, just I didn't have time to reply this morning. -- mattia :wq! |
From: tehownt t. <te...@gm...> - 2008-11-06 12:59:58
Attachments:
cpufreqd_output_2.3.3-3.txt
|
First I want to thank you for taking the time to help me and for developing cpufreqd, its ease of configuration and flexibility makes it one of the most useful application for anyone using some frequency scaling (if someone could just develop a GTK frontend to the config file, I'm sure it'll get included by default in most distros). I followed your advice and installed a 2.3.3-3 Ubuntu .deb but without luck, at least it removed the /energy_* debug output. I've attached the log from 2.3.3-3 in which I've plugged/unplugged the laptop multiple times, I really am clueless as to why the frequency gets locked at 800mhz because everything seems to work fine... I hope you can find useful info in the output. Thanks again ! --teht On Thu, Nov 6, 2008 at 6:24 AM, Mattia Dongili <mal...@li...> wrote: > Hello, > > On Wed, Nov 05, 2008 at 11:57:02PM -0500, tehownt tehownt wrote: >> So here's the little story/mess: >> >> I have that XPS M1330 running cpufreq successfully in Ubuntu 8.10 >> kernel 2.6.27-7-generic with ondemand, performance, userspace and >> conservative governors available. >> >> I've also got cpufreq_acpi and speedstep-centrino modules correctly loaded. > > you don't need both, cpufreq_acpi is the one you want generally > >> >> I've been using a simple cpufreq 'ondemand' setup that comes with >> ubuntu stock without any problems, ( i.e. choses between 800mhz and >> 2.4ghz depending on load) but I wanted to make it more "intelligent", >> i.e. switch from a 'performance' running at 2.4ghz when plugged in and >> when running on battery, keep the original 'ondemand' (800000-2400000) >> mode. >> >> I thus installed cpufreqd 2.3.3-1 (from the repos), reading somewhere > > so you're using a debian based distro, there is a 2.3.3-3 in debian at > least that fixes a couple of bugs, one of which is the energy_* thing > you mentioned. > > ... >> i.e. the file /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq >> and scaling_min_freq contain '800000' and cpufreq-info states that >> both cores are in 'ondemand' governor mode that choses between 800mhz >> and 800mhz. > > hmmmm... > can you run cpufreqd with > cpufreqd -D -V7 > and check what it's doing? That is the best way to debug it, there will > be a lot of output (feel free to send it here) it will give me some > clues about what cpurfeqd is doing wrong even though there is no > apparent error. > > Thanks. > PS: I also read the -user ml, just I didn't have time to reply this > morning. > -- > mattia > :wq! > |
From: Mattia D. <mal...@li...> - 2008-11-06 13:13:20
|
On Thu, Nov 06, 2008 at 07:52:41AM -0500, tehownt tehownt wrote: ... > I followed your advice and installed a 2.3.3-3 Ubuntu .deb but without > luck, at least it removed the /energy_* debug output. > > I've attached the log from 2.3.3-3 in which I've plugged/unplugged the > laptop multiple times, I really am clueless as to why the frequency > gets locked at 800mhz because everything seems to work fine... cpufreqd_loop : New Rule ("AC Off - Medium Battery"), applying. cpufreqd_set_profile : Couldn't set profile "Powersave High" set for cpu0 (2400000-800000-ondemand) cpufreqd_loop : Cannot set policy, Rule unchanged ("AC Rule"). this is the culprit. Now,why is this happening... I have no idea. Actually there was a problem related to libcpufreq a few months ago. The latest cpufrequtils/libcpufreq is 005, what do you have? Best, -- mattia :wq! |
From: tehownt t. <te...@gm...> - 2008-11-07 12:05:30
|
I've used strace in order to get more details on the execution hoping to find something... On Thu, Nov 6, 2008 at 5:40 PM, tehownt tehownt <te...@gm...> wrote: > I managed to compile and install version 005, same problem. > > I launched the daemon with the AC OFF (values were correctly set) then > plugged it, and unplugged it (values were then locked at 800000), > output attached. > > Thanks again for your time ! > > > > On Thu, Nov 6, 2008 at 5:28 PM, tehownt tehownt <te...@gm...> wrote: >> Thanks for the follow-up, sorry for the delayed answer I had limited >> acces to my mail today. >> >> It's funny that the new 2.3.3-3 logging has an error because when I >> did the -V7 command with the 2.3.3-1 version I didn't have such errors >> in the log: >> >> cpufreqd_loop : New Rule ("AC Off - Medium Battery"), applying. >> cpufreqd_set_profile : Profile "Powersave High" set for CPU0 >> cpufreqd_set_profile : Profile "Powersave High" set for CPU1 >> event_wait : processor CPU0 00000080 0000000 (32) >> alarm_handler : Caught ALARM signal (Alarm clock). >> >> eventhough the frequencies still were stuck at 800-800 ondemand. >> >> But I also noticed that, if I restart the daemon while the AC is OFF, >> it sometimes manages to get it right to 800000-2400000-ondemand >> (attached the log too)... >> >> >> Regarding cpufrequtils version, I had these installed: >> >> cpufrequtils 002-7.2 >> libcpufreq0 002-7.2 >> >> I found some builds for 004-2 which I installed, but without much sucess... >> >> It removed the errors in the log though (full log attached). >> >> cpufreqd_loop : New Rule ("AC Off - Medium Battery"), applying. >> cpufreqd_set_profile : Profile "Powersave High" set for CPU0 >> cpufreqd_set_profile : Profile "Powersave High" set for CPU1 >> event_wait : processor CPU0 00000080 0000000 (32) >> alarm_handler : Caught ALARM signal (Alarm clock). >> cpufreqd_loop : Current time is: 1226009471::769134 >> >> But didn't change the frequencies correctly, still stuck at >> 800000-800000-ondemand... >> >> I'll have to search more in order to get the 005 version of >> cpufrequtils since it's not build for ubuntu yet, and it wasn't >> compiling straight through when I tried. >> >> Thanks ! >> >> On Thu, Nov 6, 2008 at 8:13 AM, Mattia Dongili <mal...@li...> wrote: >>> On Thu, Nov 06, 2008 at 07:52:41AM -0500, tehownt tehownt wrote: >>> ... >>>> I followed your advice and installed a 2.3.3-3 Ubuntu .deb but without >>>> luck, at least it removed the /energy_* debug output. >>>> >>>> I've attached the log from 2.3.3-3 in which I've plugged/unplugged the >>>> laptop multiple times, I really am clueless as to why the frequency >>>> gets locked at 800mhz because everything seems to work fine... >>> >>> cpufreqd_loop : New Rule ("AC Off - Medium Battery"), applying. >>> cpufreqd_set_profile : Couldn't set profile "Powersave High" set for cpu0 (2400000-800000-ondemand) >>> cpufreqd_loop : Cannot set policy, Rule unchanged ("AC Rule"). >>> >>> this is the culprit. Now,why is this happening... I have no idea. >>> Actually there was a problem related to libcpufreq a few months ago. >>> The latest cpufrequtils/libcpufreq is 005, what do you have? >>> >>> Best, >>> -- >>> mattia >>> :wq! >>> >> > |
From: Mattia D. <mal...@li...> - 2008-11-08 07:07:24
|
On Fri, Nov 07, 2008 at 07:05:24AM -0500, tehownt tehownt wrote: > I've used strace in order to get more details on the execution hoping > to find something... ... > write(1, "cpufreqd_loop : New R"..., 75) = 75 > open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq", O_RDONLY) = 3 > read(3, "800000\n", 254) = 7 > close(3) = 0 > open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq", O_WRONLY) = 3 > write(3, "2400000", 7) = 7 this looks wrong > close(3) = 0 > open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq", O_WRONLY) = 3 > write(3, "800000", 6) = 6 > close(3) = 0 > open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", O_WRONLY) = 3 > write(3, "ondemand", 8) = 8 > close(3) = 0 > write(1, "cpufreqd_set_profile : Profi"..., 65) = 65 > open("/sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq", O_RDONLY) = 3 > read(3, "800000\n", 254) = 7 > close(3) = 0 > open("/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq", O_WRONLY) = 3 > write(3, "2400000", 7) = 7 and this too, which leads to: parse_config_profile : [Profile] "Powersave High" MAX is 2400000, MIN is 800000 It looks like you have a typo in your config file. And I have a bug in cpufreqd when trying to validate the frequencies. I'll see what I can do, in the meantime you can fix your config file and you should be ok. BTW: you may want to switch on the 'double_check' parameter in the configuration general section for a bit just to make sure all is working ok. Cpufreqd will re-read the values written to /sys and verify they correspond to the expected values. Let me know -- mattia :wq! |
From: Mattia D. <mal...@li...> - 2008-11-08 07:25:45
|
On Sat, Nov 08, 2008 at 04:07:18PM +0900, Mattia Dongili wrote: > On Fri, Nov 07, 2008 at 07:05:24AM -0500, tehownt tehownt wrote: ... > > close(3) = 0 > > open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq", O_WRONLY) = 3 > > write(3, "800000", 6) = 6 > > close(3) = 0 > > open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", O_WRONLY) = 3 > > write(3, "ondemand", 8) = 8 > > close(3) = 0 > > write(1, "cpufreqd_set_profile : Profi"..., 65) = 65 > > open("/sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq", O_RDONLY) = 3 > > read(3, "800000\n", 254) = 7 > > close(3) = 0 > > open("/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq", O_WRONLY) = 3 > > write(3, "2400000", 7) = 7 > > and this too, which leads to: > parse_config_profile : [Profile] "Powersave High" MAX is 2400000, MIN is 800000 hell no! 2400000 is actually an acceptable value: scaling_available_frequencies: 2401000 2400000 2000000 1600000 1200000 800000 out of ideas for now. One thing: if you try the entire process by hand, does it work? i.e: with cpufreqd stopped run for i in `seq 0 1` ; do cpufreq-set -c $i -g ondemand --min 800000 --max 2400000 ; done ; cpufreq-info after replugging the laptop. I remember there were some user reports about laptops that required settling for a few seconds before the kernel was able to actually change the freq/voltage. -- mattia :wq! |
From: tehownt t. <te...@gm...> - 2008-11-06 22:28:11
|
Thanks for the follow-up, sorry for the delayed answer I had limited acces to my mail today. It's funny that the new 2.3.3-3 logging has an error because when I did the -V7 command with the 2.3.3-1 version I didn't have such errors in the log: cpufreqd_loop : New Rule ("AC Off - Medium Battery"), applying. cpufreqd_set_profile : Profile "Powersave High" set for CPU0 cpufreqd_set_profile : Profile "Powersave High" set for CPU1 event_wait : processor CPU0 00000080 0000000 (32) alarm_handler : Caught ALARM signal (Alarm clock). eventhough the frequencies still were stuck at 800-800 ondemand. But I also noticed that, if I restart the daemon while the AC is OFF, it sometimes manages to get it right to 800000-2400000-ondemand (attached the log too)... Regarding cpufrequtils version, I had these installed: cpufrequtils 002-7.2 libcpufreq0 002-7.2 I found some builds for 004-2 which I installed, but without much sucess... It removed the errors in the log though (full log attached). cpufreqd_loop : New Rule ("AC Off - Medium Battery"), applying. cpufreqd_set_profile : Profile "Powersave High" set for CPU0 cpufreqd_set_profile : Profile "Powersave High" set for CPU1 event_wait : processor CPU0 00000080 0000000 (32) alarm_handler : Caught ALARM signal (Alarm clock). cpufreqd_loop : Current time is: 1226009471::769134 But didn't change the frequencies correctly, still stuck at 800000-800000-ondemand... I'll have to search more in order to get the 005 version of cpufrequtils since it's not build for ubuntu yet, and it wasn't compiling straight through when I tried. Thanks ! On Thu, Nov 6, 2008 at 8:13 AM, Mattia Dongili <mal...@li...> wrote: > On Thu, Nov 06, 2008 at 07:52:41AM -0500, tehownt tehownt wrote: > ... >> I followed your advice and installed a 2.3.3-3 Ubuntu .deb but without >> luck, at least it removed the /energy_* debug output. >> >> I've attached the log from 2.3.3-3 in which I've plugged/unplugged the >> laptop multiple times, I really am clueless as to why the frequency >> gets locked at 800mhz because everything seems to work fine... > > cpufreqd_loop : New Rule ("AC Off - Medium Battery"), applying. > cpufreqd_set_profile : Couldn't set profile "Powersave High" set for cpu0 (2400000-800000-ondemand) > cpufreqd_loop : Cannot set policy, Rule unchanged ("AC Rule"). > > this is the culprit. Now,why is this happening... I have no idea. > Actually there was a problem related to libcpufreq a few months ago. > The latest cpufrequtils/libcpufreq is 005, what do you have? > > Best, > -- > mattia > :wq! > |
From: tehownt t. <te...@gm...> - 2008-11-06 22:40:40
Attachments:
cpufreqd_2.3.3-3_libcpufreq_005_ACOFF_ACON_ACOFF.txt
|
I managed to compile and install version 005, same problem. I launched the daemon with the AC OFF (values were correctly set) then plugged it, and unplugged it (values were then locked at 800000), output attached. Thanks again for your time ! On Thu, Nov 6, 2008 at 5:28 PM, tehownt tehownt <te...@gm...> wrote: > Thanks for the follow-up, sorry for the delayed answer I had limited > acces to my mail today. > > It's funny that the new 2.3.3-3 logging has an error because when I > did the -V7 command with the 2.3.3-1 version I didn't have such errors > in the log: > > cpufreqd_loop : New Rule ("AC Off - Medium Battery"), applying. > cpufreqd_set_profile : Profile "Powersave High" set for CPU0 > cpufreqd_set_profile : Profile "Powersave High" set for CPU1 > event_wait : processor CPU0 00000080 0000000 (32) > alarm_handler : Caught ALARM signal (Alarm clock). > > eventhough the frequencies still were stuck at 800-800 ondemand. > > But I also noticed that, if I restart the daemon while the AC is OFF, > it sometimes manages to get it right to 800000-2400000-ondemand > (attached the log too)... > > > Regarding cpufrequtils version, I had these installed: > > cpufrequtils 002-7.2 > libcpufreq0 002-7.2 > > I found some builds for 004-2 which I installed, but without much sucess... > > It removed the errors in the log though (full log attached). > > cpufreqd_loop : New Rule ("AC Off - Medium Battery"), applying. > cpufreqd_set_profile : Profile "Powersave High" set for CPU0 > cpufreqd_set_profile : Profile "Powersave High" set for CPU1 > event_wait : processor CPU0 00000080 0000000 (32) > alarm_handler : Caught ALARM signal (Alarm clock). > cpufreqd_loop : Current time is: 1226009471::769134 > > But didn't change the frequencies correctly, still stuck at > 800000-800000-ondemand... > > I'll have to search more in order to get the 005 version of > cpufrequtils since it's not build for ubuntu yet, and it wasn't > compiling straight through when I tried. > > Thanks ! > > On Thu, Nov 6, 2008 at 8:13 AM, Mattia Dongili <mal...@li...> wrote: >> On Thu, Nov 06, 2008 at 07:52:41AM -0500, tehownt tehownt wrote: >> ... >>> I followed your advice and installed a 2.3.3-3 Ubuntu .deb but without >>> luck, at least it removed the /energy_* debug output. >>> >>> I've attached the log from 2.3.3-3 in which I've plugged/unplugged the >>> laptop multiple times, I really am clueless as to why the frequency >>> gets locked at 800mhz because everything seems to work fine... >> >> cpufreqd_loop : New Rule ("AC Off - Medium Battery"), applying. >> cpufreqd_set_profile : Couldn't set profile "Powersave High" set for cpu0 (2400000-800000-ondemand) >> cpufreqd_loop : Cannot set policy, Rule unchanged ("AC Rule"). >> >> this is the culprit. Now,why is this happening... I have no idea. >> Actually there was a problem related to libcpufreq a few months ago. >> The latest cpufrequtils/libcpufreq is 005, what do you have? >> >> Best, >> -- >> mattia >> :wq! >> > |
From: tehownt t. <te...@gm...> - 2008-11-08 12:43:41
|
On Sat, Nov 8, 2008 at 7:41 AM, tehownt tehownt <te...@gm...> wrote: > Yes I don't think I have a typo in the config file, and I'm pretty > sure you're right that the laptop requires to "settle" before being > able to change to ondemand 800/2.4, I've tried to mimic the cpufreqd > behaviour I wanted using basic .sh scripts in /etc/acpi/battery.d/ and > /etc/acpi/ac.d/ which called cpufreq -d 800000 -u 2400000 -g ondemand > and I wasn't able to change the file scaling_max_freq right after I > unplugged the laptop around 10 seconds according to what I've noticed. > So I did a loop, reading the file and calling cpufreq until it had the > right value, it sortof worked but while doing so I used inotify in > order to monitor scaling_max_freq file access and noticed wierd things > for instance double modification to scaling_max_freq when the AC was > unplugged and some process (which I can't identify) reading > scaling_max_freq in loop forever when I replugged the AC. > > So I'll try the double_check option, but the more I'm searching, the > more it seems to be a problem with cpufreq and the kernel modules in > itself resulting in a file access race conditions of some sort... > > > On Sat, Nov 8, 2008 at 2:25 AM, Mattia Dongili <mal...@li...> wrote: >> On Sat, Nov 08, 2008 at 04:07:18PM +0900, Mattia Dongili wrote: >>> On Fri, Nov 07, 2008 at 07:05:24AM -0500, tehownt tehownt wrote: >> ... >>> > close(3) = 0 >>> > open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq", O_WRONLY) = 3 >>> > write(3, "800000", 6) = 6 >>> > close(3) = 0 >>> > open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", O_WRONLY) = 3 >>> > write(3, "ondemand", 8) = 8 >>> > close(3) = 0 >>> > write(1, "cpufreqd_set_profile : Profi"..., 65) = 65 >>> > open("/sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq", O_RDONLY) = 3 >>> > read(3, "800000\n", 254) = 7 >>> > close(3) = 0 >>> > open("/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq", O_WRONLY) = 3 >>> > write(3, "2400000", 7) = 7 >>> >>> and this too, which leads to: >>> parse_config_profile : [Profile] "Powersave High" MAX is 2400000, MIN is 800000 >> >> hell no! >> 2400000 is actually an acceptable value: >> >> scaling_available_frequencies: >> 2401000 2400000 2000000 1600000 1200000 800000 >> >> out of ideas for now. One thing: if you try the entire process by hand, >> does it work? i.e: with cpufreqd stopped run >> for i in `seq 0 1` ; do cpufreq-set -c $i -g ondemand --min 800000 --max 2400000 ; done ; cpufreq-info >> after replugging the laptop. >> I remember there were some user reports about laptops that required >> settling for a few seconds before the kernel was able to actually >> change the freq/voltage. >> -- >> mattia >> :wq! >> > |
From: tehownt t. <te...@gm...> - 2008-11-08 12:49:26
|
Ok the double_check option seems to work fine, I get around 10 seconds of these: cpufreqd_set_profile : Profile "Powersave High" set for CPU0 cpufreqd_set_profile : I haven't been able to set the chosen policy for CPU0. I set 2401000-800000-ondemand System says 800000-800000-ondemand cpufreqd_loop : Cannot set policy, Rule unchanged ("AC Rule"). but in the end it seems to be able to change it: cpufreqd_set_profile : Profile "Powersave High" set for CPU0 cpufreqd_set_profile : Policy correctly set 2401000-800000-ondemand cpufreqd_set_profile : Profile "Powersave High" set for CPU1 cpufreqd_set_profile : Policy correctly set 2401000-800000-ondemand alarm_handler : Caught ALARM signal (Alarm clock). It's not perferct but for what I need, it's quite OK ;) So I hope they get that bug fixed in future kernels but in the mean time I'll use the double_check option, nice from you to have thought about this feature ;) Thanks again for taking your time helping me, I hope this log will provide someone with help at some point in time ! Gracie Mille ! On Sat, Nov 8, 2008 at 7:43 AM, tehownt tehownt <te...@gm...> wrote: > On Sat, Nov 8, 2008 at 7:41 AM, tehownt tehownt <te...@gm...> wrote: >> Yes I don't think I have a typo in the config file, and I'm pretty >> sure you're right that the laptop requires to "settle" before being >> able to change to ondemand 800/2.4, I've tried to mimic the cpufreqd >> behaviour I wanted using basic .sh scripts in /etc/acpi/battery.d/ and >> /etc/acpi/ac.d/ which called cpufreq -d 800000 -u 2400000 -g ondemand >> and I wasn't able to change the file scaling_max_freq right after I >> unplugged the laptop around 10 seconds according to what I've noticed. >> So I did a loop, reading the file and calling cpufreq until it had the >> right value, it sortof worked but while doing so I used inotify in >> order to monitor scaling_max_freq file access and noticed wierd things >> for instance double modification to scaling_max_freq when the AC was >> unplugged and some process (which I can't identify) reading >> scaling_max_freq in loop forever when I replugged the AC. >> >> So I'll try the double_check option, but the more I'm searching, the >> more it seems to be a problem with cpufreq and the kernel modules in >> itself resulting in a file access race conditions of some sort... >> >> >> On Sat, Nov 8, 2008 at 2:25 AM, Mattia Dongili <mal...@li...> wrote: >>> On Sat, Nov 08, 2008 at 04:07:18PM +0900, Mattia Dongili wrote: >>>> On Fri, Nov 07, 2008 at 07:05:24AM -0500, tehownt tehownt wrote: >>> ... >>>> > close(3) = 0 >>>> > open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq", O_WRONLY) = 3 >>>> > write(3, "800000", 6) = 6 >>>> > close(3) = 0 >>>> > open("/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", O_WRONLY) = 3 >>>> > write(3, "ondemand", 8) = 8 >>>> > close(3) = 0 >>>> > write(1, "cpufreqd_set_profile : Profi"..., 65) = 65 >>>> > open("/sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq", O_RDONLY) = 3 >>>> > read(3, "800000\n", 254) = 7 >>>> > close(3) = 0 >>>> > open("/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq", O_WRONLY) = 3 >>>> > write(3, "2400000", 7) = 7 >>>> >>>> and this too, which leads to: >>>> parse_config_profile : [Profile] "Powersave High" MAX is 2400000, MIN is 800000 >>> >>> hell no! >>> 2400000 is actually an acceptable value: >>> >>> scaling_available_frequencies: >>> 2401000 2400000 2000000 1600000 1200000 800000 >>> >>> out of ideas for now. One thing: if you try the entire process by hand, >>> does it work? i.e: with cpufreqd stopped run >>> for i in `seq 0 1` ; do cpufreq-set -c $i -g ondemand --min 800000 --max 2400000 ; done ; cpufreq-info >>> after replugging the laptop. >>> I remember there were some user reports about laptops that required >>> settling for a few seconds before the kernel was able to actually >>> change the freq/voltage. >>> -- >>> mattia >>> :wq! >>> >> > |