A central processing unit (CPU) is the electronic circuitry within a computer that carries out the instructions of a computer program by performing the basic arithmetic, logical, control and input/output (I/O) operations specified by the instructions. [read more at http://en.wikipedia.org/wiki/Central_processing_unit]

  • Materials:
    • AMD Athlon XP 1700+ Thoroughbred @ XP 3300+ JIUHB 0308/10 AXDA1700DLT3C XPMW(1,5V) - unlocked multiplier - cost 82€
      This is probably one of the best stepping ever produced as today (6.06.2003) by AMD, far away better then JIUHB, JIUGB and JIUCB with the revision DUT3C. The core is using as default only 1.5V instead of 1.6V (JIU*B stepping)!
      When using 1.55V, this kind of cpu is handling a confortable XP-2800. Pushing it to limit (1.775V) let me reach 2500MHz (FSB:200MHz, multiplier 12,5) this is damn a XP3000+ This CPU also outpassed AMD's Athlon XP 3000+ with Barton core (they run at only 2166MHz and cost 400€). Moreover my CPU is running at 333Mhz or even 400Mhz synchronously with memory
    • Watercooling set from Innovatek bought at Watercooling.de NO I am not a crazy overclocker, but I am SICK of hearing my Volcano 9: you can not stay beside the pc when it is running.
    • Memory 2x256Mb PC333 (=PC2700) Note even better you can buy: PC400 (=PC3200) or PC466 (=PC3700)

  • &160;linux-tux core2extreme_quad_cpu
    Cpufreqd is a small daemon to adjust cpu speed and voltage (and not only) for kernels using any of the cpufreq drivers available. Cpufreqd is not a userspace governor.

    Cpufreqd allows you to apply governor profiles from rules based on battery level, ac status, temperature (ACPI or sensors), running programs, cpu usage and (maybe) more. You can also change your nforce FSB clock and video card frequency (NVidia only) or execute arbitrary commands when a specific rule is applied.

    The nice things with Linux is that you have a total, absolute, full control!

    Defining new profiles

    Look for cpufreqd.conf

    My profile settings are in /etc/sysconfig/powersave

    Example of a profile

    name=On Demand High

    Defining Rules:

    Examples of the flexibility offered:

    • If temperature is too high, throttle CPU speed lower
    • if some application are running, lets say your anti-virus, you may want more CPU:

    There is a lot more settings, as usual, just read the manual

    # man cpufreqd.conf&160;

    Querying the CPU

    To list all available profile, just run as root

    # cpufreqd-get -l


    # cpufreq-info

    analyzing CPU 0:
    &160; driver: powernow-k8
    &160; CPUs which need to switch frequency at the same time: 0
    &160; hardware limits: 1000 MHz - 2.00 GHz
    &160; available frequency steps: 2.00 GHz, 1.80 GHz, 1000 MHz
    &160; available cpufreq governors: ondemand, userspace, powersave, performance
    &160; current policy: frequency should be within 2.00 GHz and 2.00 GHz.
    &160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; The governor "ondemand" may decide which speed to use
    &160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; within this range.
    &160; current CPU frequency is 2.00 GHz (asserted by call to hardware).&160;

    Changing the CPU speed


    Now lets change the speed. As a server, I don't see any reason to try to minimize the speed except in order to save electricity. The profile onDemand should be able to provide the best compromise, changing CPU speed based on server load and thus be more green. For the sake of this article, I will forbid the CPU to downgrade its speed...
    Attention you'll have to respect the hardware limit of you processor. In my case I use currently an AMD K8 Opteron 146 rated at maximum 2GHz

    So depending on your processor, you'll have to either

    • Query the Internet to find the CPU speed range or
    • Use cpufreqd-info that's for sure the fastest and safest
    • Extracting the info from where they are (for every cpu):
      cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
      cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

    I was shocked to discover that my current max speed was set at 1Ghz, leading to a server consuming 80 to 250% of CPU load.

    By running, this command cpufreq, I force the system to never go below 2GHz.

    cpufrequtils 0.4: cpufreq-set (C) Dominik Brodowski 2004
    Report errors and bugs to This email address is being protected from spambots. You need JavaScript enabled to view it., please.
    Usage: cpufreq-set [options]
    &160; -c CPU, --cpu CPU&160;&160;&160;&160;&160;&160;&160; number of CPU where cpufreq settings shall be modified
    &160; -d FREQ, --min FREQ&160;&160;&160;&160;&160; new minimum CPU frequency the governor may select
    &160; -u FREQ, --max FREQ&160;&160;&160;&160;&160; new maximum CPU frequency the governor may select
    &160; -g GOV, --governor GOV&160;&160; new cpufreq governor
    &160; -f FREQ, --freq FREQ&160;&160;&160;&160; specific frequency to be set. Requires userspace
    &160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; governor to be available and loaded
    &160; -h, --help&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; Prints out this screen

    1. Omitting the -c or --cpu argument is equivalent to setting it to zero
    2. The -f FREQ, --freq FREQ parameter cannot be combined with any other parameter
    &160;&160; except the -c CPU, --cpu CPU parameter
    3. FREQuencies can be passed in Hz, kHz (default), MHz, GHz, or THz
    &160;&160; by postfixing the value with the wanted unit name, without any space
    &160;&160; (FREQuency in kHz =^ Hz * 0.001 =^ MHz * 1000 =^ GHz * 1000000).

    # cpufreqd-set -c 0 -d 2GHz

    The BogoMips make a jump and also the server load is greatly reduce, this can be confirmed by executing:

    # cat /proc/cpuinfo

    processor&160;&160;&160;&160;&160;&160; : 0
    vendor_id&160;&160;&160;&160;&160;&160; : AuthenticAMD
    cpu family&160;&160;&160;&160;&160; : 15
    model&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; : 39
    model name&160;&160;&160;&160;&160; : AMD Opteron(tm) Processor 146
    stepping&160;&160;&160;&160;&160;&160;&160; : 1
    cpu MHz&160;&160;&160;&160;&160;&160;&160;&160; : 1995.468
    cache size&160;&160;&160;&160;&160; : 1024 KB
    fdiv_bug&160;&160;&160;&160;&160;&160;&160; : no
    hlt_bug&160;&160;&160;&160;&160;&160;&160;&160; : no
    f00f_bug&160;&160;&160;&160;&160;&160;&160; : no
    coma_bug&160;&160;&160;&160;&160;&160;&160; : no
    fpu&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; : yes
    fpu_exception&160;&160; : yes
    cpuid level&160;&160;&160;&160; : 1
    wp&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; : yes
    flags&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov
    &160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext
    &160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160;&160; fxsr_opt lm 3dnowext 3dnow pni lahf_lm
    bogomips&160;&160;&160;&160;&160;&160;&160; : 3994.29

    Back to my Linux desktop

    I really enjoy using OpenSuse 11.1 powered by KDE 4.2, changing CPU settings has never been easier thanks to the applet KPowersave

    KPowersave is the KDE front end for power management. It provides battery monitoring, suspend/ standby triggers and many more power management features for KDE (and GNOME).

    You'll find the same applet in all version of KDE

    powersave KPowersave is great ad very intuitive in KDE 4.2