Announcement

Collapse
No announcement yet.

CPU Underclocking

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

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

    Comment


    • #3
      Thanks a lot for your answer, but :

      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)

      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.

      Comment


      • #4
        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...

        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

        Comment


        • #5
          If I find something I'll post results here.

          Thank you very much mlau for your help.

          Comment


          • #6
            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, 07:08 AM.

            Comment


            • #7
              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?


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

              Comment


              • #8
                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, 02:15 PM.

                Comment

                Working...
                X