ot Mariian Marinov(24-06-2006)

reiting (11)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Ot dosta vreme me iznervia fakta, che laptop-a mi gree prekaleno mnogo. Predi dosta vreme Delian Delchev mi dade ideiata za ponizhavane na naprezhenieto koeto izpolzva protsesora s tsel po-dulga rabota na bateriia i po-niska temperatura na protsesora po vreme na rabota.

Sled malko tursene v internet namerih tozi patch kum iadroto.

Sled kato go dobavite triabva da si prekompilirate iadroto s tazi optsiia:

   Power management options (ACPI, APM) -->
     CPU Frequency scalling --> 
       [M] Intel Enchenced SpeedStep
         [*} Userspace control of CPU frequency/voltage table
         [*] Use ACPI tables to decode valid frewuqncy/voltage pairs
 
ili direktno v konfiguratsionniia fail:

   CONFIG_X86_SPEEDSTEP_CENTRINO=m
   CONFIG_X86_SPEEDSTEP_CENTRINO_SYSFS=y
   CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y
 

Sled restartirane s noviia modul v /sys/devices/system/cpu/cpu0 se poiaviava edna nova direktori cpufreq. V neia se namirat failovete, chrez koito vie mozhete da komandvate speedsteping-a na vashiiat protsesor.

Predi da produlzha natatuk iskam da nablegna na tova, che ponizhavaneto na naprezhenieto na protsesora vi mozhe seriozno da go uvredi! Nikoi ne mozhe da garantira, che sled izpolzvaneto na tazi tehnika kompyuturut vi shte produlzhi da raboti normalno!


Eto i malko raziasneniia za niakoi ot failovete v tazi direktoriia:

scaling_available_governors: v tozi fail se sudurzhat imenata na vsichki governor-i koito v momenta ste zaredili. Governor-ite koito mozhe da imate sa userspace(cpufreq_userspace), powersave(cpufreq_powersave), ondeman(cpufreq_ondemand), conservative(cpufreq_conservative) i performance(cpufreq_performance). Pri kompiliraneto na iadroto zadulzhitelno se izbira pone edin governor koito shte bude izbran po podrazbirane i shte bude statichno kompiliran v iadroto. Poveche informatsiia za governor-ite mozhete da namerite v /usr/src/linux/Documentation/cpu-freq/governors.txt

scaling_available_frequencies: V tozi fail, shte vidite chestotite koito mozhete da smeniate. V zavisimost s kakuv Pentium M protsesor ste, tuk shte vidite razlichni stoinosti.

scaling_cur_freq: tekushtata chestota na koiato raboti protsesora

scaling_governor: izbraniiat v momenta governor. Izpolzvaiki echo "governor" > scaling_governor mozhete da promenite izbraniiat v momenta governor s koito i da e drug ot scaling_avalable_governors

scaling_setspeed: Tozi fail sushtestvuva samo kogato izbraniiat governor e userspace. V nego se vizhda tekushtata chestota na koiato raboti protsesora, no za razlika ot scaling_cur_freq tuk vie mozhete da ia promeniate. Izpolzvaiki echo freq > scaling_setspeed vie mozhete da smenite rabotnata chestota na protsesoa no samo s chestota koiato e vpisana v scaling_available_frequencies. Po dokumentatsiia bi sledvalo da mozhete da promeniate rabotnata chestota na vsiaka edna v granitsite ot scaling_min_freq i scaling_max_freq no az za momenta ne sum uspial da postigna tozi efekt.

voltage_table: tuk sa pokazani voltazhite na koito prevklyuchva protsesora pri razlichnite chestoti. Izpolzvaiki echo "voltage" > voltage_table mozhete da promeniate tezi stoinosti.

op_points_table: tuk sumarno se pokazvat dvoikite chestota/naprezhenie za vsiaka chestota ot scaling_available_frequencies

za da nameria nai-niskiiat voltazh pri koito laptop-a mi mozhe da raboti izpolzvah tozi skript(zaimstvan ot HOWTO vuv Wiki-to na Gentoo):
 #!/bin/bash
 
 # Min voltage value
 # Voltages will not be set below than this value
 Vmin=700
 
 # Frequence settings
 Fall=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies`
 
 # run the CPU this many seconds at the given MHz to check if OK
 Period=3
 
 echo "Avail. Frequencies: $Fall"
 
 while [ 0 ]; do
 
 	# Get current votages
 	CurVoltages=`cat /sys/devices/system/cpu/cpu0/cpufreq/voltage_table | cut --delimiter="," --output-delimiter=" " --fields=1-`
 	NewVoltages=""
 
 	# Compute new voltages as current - 16 mV
 	for V in $CurVoltages; do
 		V=$(($V - 16))
 
                 # Ensure that voltage is not below min value
                 if [ $V -lt $Vmin ]; then
 			V=$Vmin
 		fi
 
 		if [ $NewVoltages ]; then
 			NewVoltages="$NewVoltages,$V"
 		else
 			NewVoltages="$V"
 		fi
 	done
 
 	# Display current settings from the sysfs file
         echo " "
         echo "Current settings:   "`cat /sys/devices/system/cpu/cpu0/cpufreq/voltage_table`
 
         # Display the new settings that we are going to write to the sysfs file
         echo "Requested settings: $NewVoltages"
 
         # Force the kernel to write its buffers to the hard disk
         # to reduce the risks of file system corruption in case of CPU freeze
         sync
 
         # Apply new settings
         echo "$NewVoltages" > /sys/devices/system/cpu/cpu0/cpufreq/voltage_table
 
         # now check if all voltages are OK and loop over all frequencies
 	for vv in $Fall; do
 		# set CPU speed
 		#echo "Setting $Fcur"
 		echo $vv > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
 
 		# sleep to see if cpu groks
 		sleep $Period
 
 		# load
 		i=0
 		while true; do
 			i=$((i+1))
 			if [ $i -gt 5000 ]; then
 				break
 			fi
 		done
 
 		echo "OK " `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq`
         done
 done
 

Tozi skript 100% shte zabie kompyutura vi zatova po-dobre go startiraite ot konzola sus vuzmozhno nai-malko drugi protsesi startirani na mashinata.

Sled kato startirate skripta, toi avtomatichno shte zapochne da ponizhava naprezhenieto na vashiia protsesor prez 16 mV kato shte testva dali kompyuturut vi shte raboti na vsiaka chestota ot scaling_available_frequencies.
Za da raboti normalno skripta triabva da ste izbrali userspace kato governor.
Kogato mashinata vi zamruzne zapishete si predposledniiat voltazh na koito e rabotila normalno restartiraite i testvaite dali mashinata vi shte raboti normalno na tova naprezhenie.



<< Blokirane na avtomatizirani ataki pod Linuks i *BSD | *buntu failovi hranilishta >>