Results 1 to 8 of 8

Thread: CPU Underclocking

  1. #1
    Join Date
    Aug 2007
    Posts
    10

    Question CPU Underclocking

    Hi,

    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 :

    cat /proc/cpuinfo
    processor : 0
    vendor_id : GenuineIntel
    cpu family : 15
    model : 2
    model name : Intel(R) Celeron(R) CPU 2.60GHz
    stepping : 9
    cpu MHz : 2600.238
    cache size : 128 KB
    fdiv_bug : no
    hlt_bug : no
    f00f_bug : no
    coma_bug : no
    fpu : yes
    fpu_exception : yes
    cpuid level : 2
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe up cid xtpr
    bogomips : 5214.59
    clflush size : 64
    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.

  2. #2
    Join Date
    Sep 2006
    Posts
    216

    Default

    Quote Originally Posted by fredo View Post
    Hi,

    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)

  3. #3
    Join Date
    Aug 2007
    Posts
    10

    Default

    Thanks a lot for your answer, but :

    Quote Originally Posted by mlau View Post
    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)

    Quote Originally Posted by mlau View Post
    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)
    This is not what I want to do. I am thinking about *really* slowing down the main loop *even* (and especially !!!) when the CPU is used at 100% !!!

    I really hope to find a solution, any help is welcome, thanks again for your answer mlau.

  4. #4
    Join Date
    Sep 2006
    Posts
    216

    Default

    Quote Originally Posted by fredo View Post
    Thanks a lot for your answer, but :



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

    Quote Originally Posted by fredo View Post
    This is not what I want to do. I am thinking about *really* slowing down the main loop *even* (and especially !!!) when the CPU is used at 100% !!!
    Good luck reading through the ACPI infested idle loop
    code jungle

  5. #5
    Join Date
    Aug 2007
    Posts
    10

    Default

    If I find something I'll post results here.

    Thank you very much mlau for your help.

  6. #6
    Join Date
    Aug 2007
    Posts
    10

    Default

    Well, CPUfreq doesn't work I guess :

    cpufreq-info
    cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
    Report errors and bugs to linux@brodo.de, please.
    analyzing CPU 0:
    no or unknown cpufreq driver is active on this CPU
    But modifying /proc/acpi/processor/CPU0/throttling seems to work !

    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...
    Last edited by fredo; 08-28-2007 at 08:08 AM.

  7. #7
    Join Date
    Sep 2006
    Posts
    216

    Default

    Quote Originally Posted by fredo View Post
    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).
    What's the reported CPU temp?


    Quote Originally Posted by fredo View Post
    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...

  8. #8
    Join Date
    Aug 2007
    Posts
    10

    Default

    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 :

    cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
    Report errors and bugs to linux@brodo.de, please.
    analyzing CPU 0:
    driver: p4-clockmod
    CPUs which need to switch frequency at the same time: 0
    hardware limits: 325 MHz - 2.60 GHz
    available frequency steps: 325 MHz, 650 MHz, 975 MHz, 1.30 GHz, 1.63 GHz, 1.95 GHz, 2.28 GHz, 2.60 GHz
    available cpufreq governors: userspace, performance
    current policy: frequency should be within 325 MHz and 2.60 GHz.
    The governor "userspace" may decide which speed to use
    within this range.
    current CPU frequency is 2.60 GHz (asserted by call to hardware).
    Unfortunately, changing the frequency seems to be exactly like changing the throttling (for my computer at least), so it's useless.
    Last edited by fredo; 08-29-2007 at 03:15 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •