If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

I really tried _everything_ and still am unable to get my CPU underclocked (and therefore a cooler system).

I recently had an idea but I don't know if it's possible to do it : I would like to modify the kernel scheduler to add something like a "sleep" in the main loop in order to slowdown the CPU usage.
I don't care (at all) if this leads to bad performance, I really want to avoid the PC to completely stop because the CPU temperature is too high.

I would like to underclock my CPU, but I think it is not possible. Indeed I have an old Intel Celeron which is not Mobile or anything :

I really tried _everything_ and still am unable to get my CPU underclocked (and therefore a cooler system).

I recently had an idea but I don't know if it's possible to do it : I would like to modify the kernel scheduler to add something like a "sleep" in the main loop in order to slowdown the CPU usage.
I don't care (at all) if this leads to bad performance, I really want to avoid the PC to completely stop because the CPU temperature is too high.

I would really appreciate any of your ideas. Thank you.

The CPU must advertise cpufreq capabilities (in general look for the 'est' flag in /proc/cpuinfo;
for older models (p2/p3/p4) only the 'mobile' variants have speedstep).
If you have a newer variant (starting with the Pentium-M
and Core/Core2) the BIOS must also provide P-State information in one of the ACPI tables.

As for scheduler modifications, it's already been done
During idle periods kernel switches CPU to lower C-states
depending on bus activity and other factors.

The 'sleep' you mention is called 'hlt' on the x86 side,
and it is used on all processors that support it (IIRC PPro and up)

Comment

The CPU must advertise cpufreq capabilities (in general look for the 'est' flag in /proc/cpuinfo;
for older models (p2/p3/p4) only the 'mobile' variants have speedstep).
If you have a newer variant (starting with the Pentium-M
and Core/Core2) the BIOS must also provide P-State information in one of the ACPI tables.

My CPU is so bad/shitty/ugly that *nothing* you mentionned above works (it is not a "mobile" version)

Comment

My CPU is so bad/shitty/ugly that *nothing* you mentionned above works (it is not a "mobile" version)

If it's a P4-derived Celeron, *maybe* the p4-clockmod
cpufreq driver will be able to lower the clock a bit.

On some systems ACPI also advertises "throttling" in
the CPU subdirectory (/proc/acpi/processor/*/throttling). This file lists
available throttling states; just write the desired
state into it. On my Laptop i can make the CPU as slow
as a Pentium-60 (10% duty cycle) but this doesn't lower temperature one bit...

I can slow down the CPU by a factor of 2 (and performances are extremely bad, a lot of things like firefox are almost unusable now ), but it really seems the temperature is affected by this operation. I don't have any sensors but the CPU fans really make less noise, so I guess it works, although I still have to really test it to be sure.

A big thanks to mlau for all his help.

EDIT : After a few tests, this is not that interesting, because the temperature on my system is still quite high (less than before but still too high for my taste).

I'm still thinking about a way to slow down the system using an idle method or something into the scheduler. Anyway, I guess nobody needs such a feature since recent CPU have CPUFreq which seems to be really useful. Time to change my computer after all...

I'm still thinking about a way to slow down the system using an idle method or something into the scheduler. Anyway, I guess nobody needs such a feature since recent CPU have CPUFreq which seems to be really useful. Time to change my computer after all...

I'm afraid you won't be able to get a lower
temperature than on a completely idle system
by means of software. Linux already utilizes
all means available to the CPU to conserve as
much power as possible.
Maybe you can lower input cpu input clock and
multiplicators in BIOS or via jumpers on the baseboard...

Comment

I think I forget to mention that I have a laptop (which is 4 years old by the way...)

For the temperature, I don't really know because (as far as I know) there is no sensor on the motherboard. The only way for me to have an idea of the temperature is by listening at the fan noise. 4 years of experience, believe me, I am used to it :P

Unfortunately I cannot change anything in the BIOS (there is almost nothing you can change in it) and I already tried to open the laptop, but I only have been able to get access to the memory and hard drive disk, nothing else.

About the kernel, I know it already tries to do its best but it tries to do it *without* performance loss. In my particular case, I don't care about losing (even a lot) performance.
So my idea is about making it sleep, like if no process was running, for a configurable amount of time, depending on whether you want a fast system or a slow one but cooler.

EDIT : I just found something interesting for cpufreq : before using cpufreq-set or cpufreq-info, it is important to load the module p4_clockmod.
After that this is what I get with cpufreq-info :