Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Script to adjust cpu frequency according to cpu temprature




Sorry, i have got some emails not sent to list, and let me explain a bit more:


This script intends to protect your machine's cpu and cooling system and tries to keep the temperature always low. It does not increase your batteries lifetime or your battery does not power your machine longer.

This is important while you are compiling ie; kdebase, openoffice etc which takes so much time and temperature of your machine stays high for along time. In this case, this script tries to keep the temperature low.

It is much different than '/pkgsrc/sysutils/estd' because estd service lowers cpu frequency once machine is idle, while this one increases cpu freqency once cpu tempretaure is low (and probably cpu is idle).

Regards,
Cem




Cem Kayali, 05/07/09 16:19:
Cem Kayali, 05/07/09 16:09:

Hi,

I have searched through Google and maling lists, and couldn't find a good script that adjusts cpu frequency with respect to cpu temperature (there are different approaches as far as i see).

This is very important for notebooks, and generally cooling problem arises once a script (especially compiling process) uses cpus for along time. In other words, this small script helps your notebook to live longer (hopefully).


How to use:

1- According to number of cpus, add/remove temp{0} lines. Below one is for core duo cpu and it checks temperature of both core. I would first test value of 'envstat | grep cpu0 | cut -d \ -f 9 | cut -b 1,2' command to make sure it gives the temperature of the core 0.

2- Check your supported frequncies by 'sysctl -a | grep machdep.est.frequency.available' command...

3- Add/remove and adjust elif/then sections according to your cpu frequncies supported and desired temperature levels. Below one ie; reduces frequency to 1400 MHz once temperature is higher than 60 C degree and below 65 C degree.

4- Create a crontab and run the script every ie; 5 mins.


#######################################
#!/bin/sh

temp0=`envstat | grep cpu0 | cut -d \  -f 9 | cut -b 1,2`
temp1=`envstat | grep cpu1 | cut -d \  -f 9 | cut -b 1,2`

 if [ ${temp0} -gt 65 ] || [ ${temp1} -gt 65 ];
then sysctl -w machdep.est.frequency.target=1200

elif [ ${temp0} -gt 60 ] || [ ${temp1} -gt 60 ];
then sysctl -w machdep.est.frequency.target=1400

elif [ ${temp0} -gt 55 ] || [ ${temp1} -gt 55 ];
then sysctl -w machdep.est.frequency.target=1600

elif [ ${temp0} -gt 50 ] || [ ${temp1} -gt 50 ];
then sysctl -w machdep.est.frequency.target=1800

elif [ ${temp0} -gt 45 ] || [ ${temp1} -gt 45 ];
then sysctl -w machdep.est.frequency.target=2000

elif [ ${temp0} -gt 40 ] || [ ${temp1} -gt 40 ];
then sysctl -w machdep.est.frequency.target=2200

else
fi
#######################################


Use at your own risk of course.


Best regards,
Cem














Home | Main Index | Thread Index | Old Index