I have another question related to power consumption on Nehalem machines. I have been able to change the processor frequency by editing the value in the file /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed. I have also played around with changing the T-states by editing the file /proc/acpi/processor/P001/throttling. I am trying to scale these values from within my application by opening the necessary files, changing the values and closing them at the end of the application. I am also interested in forcing the CPU to go into the C-states during certain periods of my application. My nehalem machine seems to be having the following settings concerning the C-states :
active state: C1
bus master activity: fff80000
*C1: type[C1] promotion[C2] demotion[--] latency usage duration
C2: type[C3] promotion[C3] demotion[C1] latency usage duration
C3: type[C3] promotion[--] demotion[C2] latency usage duration
I am not too sure at this point of time if forcing the processors to go to the C-state is beneficial to my application, but, I would like to give it a shot. I have not yet come across any article that describes how we can manually force the processor to move into a C-state. Is it even possible to do something like that reliably from the application or the middleware layers?