Mark Haywood

AMD PowerNow! for Solaris

Monday May 05, 2008

One of my earlier blog entries announced Enhanced Intel SpeedStep support in Solaris. At the tail end of that blog entry, I mentioned that AMD PowerNow! support in Solaris was not far off. And so it was. PowerNow! support for AMD processor families 10h and greater is now available in Solaris 10 Update 5 and OpenSolaris.

If you are wondering what AMD processor family 10h is, then you should be thinking of newer AMD processors like Barcelona. If you have Solaris running on your system you can retrieve the CPU family value via the cpu_info kstat:

kstat -m cpu_info -i 0 -s implementation        
module: cpu_info                        instance: 0     
name:   cpu_info0                       class:    misc
        implementation                  x86 (chipid 0x0 AuthenticAMD 100F23
family 16 model 2 step 3 clock 2000 MHz)

Note that the family value is printed in decimal, so the family value of 16 above is equivalent to 10 in hex and so, PowerNow! support exists in Solaris for this CPU.

The easiest way to tell if your Solaris AMD system supports PowerNow! is to display the new supported_frequencies_Hz kstat statistic that has been added to the cpu_info module:

$ kstat -m cpu_info -i 0 -s supported_frequencies_Hz
module: cpu_info                        instance: 0     
name:   cpu_info0                       class:    misc
        supported_frequencies_Hz
1000000000:1200000000:1400000000:1700000000:2000000000

The existence of more than one frequency in the list above indicates that Solaris supports frequency scaling of the CPU. To enable CPU power management on Solaris x86, a "cpupm" entry must be added to the power.conf(4) file. Additionally, a "cpu-threshold" entry can be added to power.conf(4) to define an idleness value by which the CPU can be power managed.

I frequently enable CPU power management on my Barcelona-based system and set its CPU idle threshold by adding the following two entries to my power.conf(4) file:

cpupm            enable
cpu-threshold    15s

After leaving my system idle for 15 seconds or more, I can see PowerNow in action by displaying the newly introduced current_clock_Hz kstat statistic:

kstat -m cpu_info -i 0 -s current_clock_Hz       
module: cpu_info                        instance: 0     
name:   cpu_info0                       class:    misc
        current_clock_Hz                1000000000
My CPU is now running at its lowest supported frequency, 1.0 GHz. This should save power and generate less heat. Cool!

[9] Comments
Like this post? del.icio.us | furl | slashdot | technorati | digg