CPU power management

Some CPU’s and system boards allow you to change operating voltage and frequency, resulting in a corresponding change in performance, and power consumed.

To test what frequencies are supported:

# kstat -m cpu_info -s supported_frequencies_Hz
module: cpu_info instance: 0
name: cpu_info0 class: misc
supported_frequencies_Hz 2000000000:2667000000module: cpu_info instance: 1
name: cpu_info1 class: misc
supported_frequencies_Hz 2000000000:2667000000module: cpu_info instance: 2
name: cpu_info2 class: misc
supported_frequencies_Hz 2000000000:2667000000

module: cpu_info instance: 3
name: cpu_info3 class: misc
supported_frequencies_Hz 2000000000:2667000000

In this example (Xeon x5355), two frequencies are supported: 2.000 and 2.667 GHz

What is the current frequency:

# kstat -m cpu_info -s current_clock_Hz
module: cpu_info instance: 0
name: cpu_info0 class: misc
current_clock_Hz 2000000000module: cpu_info instance: 1
name: cpu_info1 class: misc
current_clock_Hz 2000000000

module: cpu_info instance: 2
name: cpu_info2 class: misc
current_clock_Hz 2667000000

module: cpu_info instance: 3
name: cpu_info3 class: misc
current_clock_Hz 2667000000

In this example, two cores are running at 2.00GHz and two at 2.667GHz

To enable CPU power management add the following lines to /etc/power.conf and let pmconfig reread the config:

# vi /etc/power.conf
...
cpupm enable
cpu-threshold 1s
...
# pmconfig
#

Or download and install powertop. When you start it, press “p” to enable CPU power management.

Using dtpower:

To be able run dtpower as a superuser (only) edit /etc/default/power:

# vi /etc/default/power
. . .
PMCHANGEPERM=-
CPRCHANGEPERM=-
. . .
#

ATTENTION: If you have an ASUS DSBF motherboard you need to upgrade the BIOS to AT LEAST version 1004. Older revisions do not support multiple frequencies.

Additional information:

CAPTCHA’s and phpBB

“Easy for bots, difficult for humans”. Not that it was the idea behind Completely Automated Public Turing tests to tell Computers and Humans Apart. The proper test should:

  1. work properly out of the box
  2. work regardless of language settings
  3. be solvable for almost all humans
  4. and few Bots

But what about the implementations? Read about CAPTCHA’s here.

SqueezeCenter again. Testing v7.3

SqueezeCenter 7.2 is officially out and not interesting anymore 😉 Let’s have a look at version 7.3 which has a new streaming service. In this test I downloaded SqueezeCenter-7.3-22975.ZIP from here.

The first attempt to start the server (after unpacking and “chmod“-ding) gave me this error:

# ./slimserver.pl
The following modules failed to load: YAML::Syck

To download and compile them, please run: /usr/local/SqueezeCenter-7.3-22975/Bin/build-perl-modules.pl YAML::Syck

Exiting..

The “built-in” build-perl-modules.pl failed to install the CPAN module:

# /usr/local/SqueezeCenter-7.3-22975/Bin/build-perl-modules.pl YAML::Syck
Welcome to the Slim Devices perl module installer.

These packages are needed for SqueezeCenter to function.
You will need a C compiler (gcc), make, and perl installed.

You will need development libraries for MySQL. eg: libmysqlclient

You will need development libraries for expat. eg: libexpat1-dev

*** Ignore any warnings about AppConfig. ***

Please enter a perl binary to use (defaults to /usr/bin/perl)
This must be the same perl binary that you ran this program with –>
Please enter a directory to download files to –>
Downloads will use lwp to fetch tarballs.

Downloading YAML-Syck-0.64.tar.gz to: /usr/local/SqueezeCenter-7.3-22975
Something looks wrong – I couldn’t read /usr/local/SqueezeCenter-7.3-22975/YAML-Syck-0.64.tar.gz, which I just downloaded.
Uncompressing..
sh: YAML-Syck-0.64.tar.gz: cannot open
tar: blocksize = 0
Couldn’t change to YAML-Syck-0.64 : No such file or directory at /usr/local/SqueezeCenter-7.3-22975/Bin/build-perl-modules.pl line 226, line 2.

So, I decided to go the old way and get rid of the supplied with SqueezeCenter CPAN directory.

# mv CPAN CPAN-orig

… update YAML::Syck just in case…

# perl -MCPAN -e shell
. . .
cpan[1]> install YAML::Syck
YAML::Syck is up to date (1.05).
#

… and start the server again …

# ./slimserver.pl
Can’t locate Encode/Detect/Detector.pm in @INC (@INC contains: /usr/local/SqueezeCenter-7.3-22975/CPAN/arch/5.8/i86pc-solaris-64int /opt/csw/SqueezeCenter-7.3-22975/CPAN/arch/5.8/i86pc-solaris-64int/auto /usr/local/SqueezeCenter-7.3-22975/CPAN/arch/5.8.4/i86pc-solaris-64int /usr/local/SqueezeCenter-7.3-22975/CPAN/arch/5.8.4/i86pc-solaris-64int/auto /usr/local/SqueezeCenter-7.3-22975/CPAN/arch/5.8/i86pc-solaris-64int /usr/local/SqueezeCenter-7.3-22975/CPAN/arch/5.8/i86pc-solaris-64int/auto /usr/local/SqueezeCenter-7.3-22975/CPAN/arch/i86pc-solaris-64int /usr/local/SqueezeCenter-7.3-22975/lib /usr/local/SqueezeCenter-7.3-22975/CPAN /usr/local/SqueezeCenter-7.3-22975 /usr/local/SqueezeCenter-7.3-22975 /usr/perl5/5.8.4/lib/i86pc-solaris-64int /usr/perl5/5.8.4/lib /usr/perl5/site_perl/5.8.4/i86pc-solaris-64int /usr/perl5/site_perl/5.8.4 /usr/perl5/site_perl /usr/perl5/vendor_perl/5.8.4/i86pc-solaris-64int /usr/perl5/vendor_perl/5.8.4 /usr/perl5/vendor_perl .) at /usr/local/SqueezeCenter-7.3-22975/Slim/Utils/Unicode.pm line 40.
BEGIN failed–compilation aborted at /usr/local/SqueezeCenter-7.3-22975/Slim/Utils/Unicode.pm line 40.
Compilation failed in require at /usr/local/SqueezeCenter-7.3-22975/Slim/Utils/Prefs/Namespace.pm line 30.
BEGIN failed–compilation aborted at /usr/local/SqueezeCenter-7.3-22975/Slim/Utils/Prefs/Namespace.pm line 30.
Compilation failed in require at /usr/local/SqueezeCenter-7.3-22975/Slim/Utils/Prefs.pm line 81.
BEGIN failed–compilation aborted at /usr/local/SqueezeCenter-7.3-22975/Slim/Utils/Prefs.pm line 81.
Compilation failed in require at /usr/local/slimserver/slimserver.pl line 146.
BEGIN failed–compilation aborted at /usr/local/slimserver/slimserver.pl line 146.

This error looks familiar. And after commenting line 40 in SqueezeCenter-7.3-22975/Slim/Utils/Unicode.pm (#use Encode::Detect::Detector; ) the server came alive and immediately updated the firmware of the Transporter to version 62.