LINUX-BG Адрес : http://www.linux-bg.org |
Понижаване на напрежението на Pentium M |
От: Мариян Маринов Публикувана на: 24-06-2006 Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=advices&key=383718537 |
От доста време ме изнервя факта, че лаптоп-а ми грее прекалено много. Преди доста време Делян Делчев ми даде идеята за понижаване на напрежението което използва процесора с цел по-дълга работа на батерия и по-ниска температура на процесора по време на работа. След малко търсене в интернет намерих този patch към ядрото. След като го добавите трябва да си прекомпилирате ядрото с тази опция: 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или директно в конфигурационния файл: CONFIG_X86_SPEEDSTEP_CENTRINO=m CONFIG_X86_SPEEDSTEP_CENTRINO_SYSFS=y CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y След рестартиране с новия модул в /sys/devices/system/cpu/cpu0 се появява една нова директори cpufreq. В нея се намират файловете, чрез които вие можете да командвате speedsteping-а на вашият процесор. Преди да продължа нататък искам да наблегна на това, че понижаването на напрежението на процесора ви може сериозно да го увреди! Никой не може да гарантира, че след използването на тази техника компютърът ви ще продължи да работи нормално! Ето и малко разяснения за някой от файловете в тази директория: scaling_available_governors: в този файл се съдържат имената на всички governor-и които в момента сте заредили. Governor-ите които може да имате са userspace(cpufreq_userspace), powersave(cpufreq_powersave), ondeman(cpufreq_ondemand), conservative(cpufreq_conservative) и performance(cpufreq_performance). При компилирането на ядрото задължително се избира поне един governor който ще бъде избран по подразбиране и ще бъде статично компилиран в ядрото. Повече информация за governor-ите можете да намерите в /usr/src/linux/Documentation/cpu-freq/governors.txt scaling_available_frequencies: В този файл, ще видите честотите които можете да сменяте. В зависимост с какъв Pentium M процесор сте, тук ще видите различни стойности. scaling_cur_freq: текущата честота на която работи процесора scaling_governor: избраният в момента governor. Използвайки echo "governor" > scaling_governor можете да промените избраният в момента governor с който и да е друг от scaling_avalable_governors scaling_setspeed: Този файл съществува само когато избраният governor е userspace. В него се вижда текущата честота на която работи процесора, но за разлика от scaling_cur_freq тук вие можете да я променяте. Използвайки echo freq > scaling_setspeed вие можете да смените работната честота на процесоа но само с честота която е вписана в scaling_available_frequencies. По документация би следвало да можете да променяте работната честота на всяка една в границите от scaling_min_freq и scaling_max_freq но аз за момента не съм успял да постигна този ефект. voltage_table: тук са показани волтажите на които превключва процесора при различните честоти. Използвайки echo "voltage" > voltage_table можете да променяте тези стойности. op_points_table: тук сумарно се показват двойките честота/напрежение за всяка честота от scaling_available_frequencies за да намеря най-ниският волтаж при който лаптоп-а ми може да работи използвах този скрипт(заимстван от HOWTO във Wiki-то на 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 Този скрипт 100% ще забие компютъра ви затова по-добре го стартирайте от конзола със възможно най-малко други процеси стартирани на машината. След като стартирате скрипта, той автоматично ще започне да понижава напрежението на вашия процесор през 16 mV като ще тества дали компютърът ви ще работи на всяка честота от scaling_available_frequencies. За да работи нормално скрипта трябва да сте избрали userspace като governor. Когато машината ви замръзне запишете си предпоследният волтаж на който е работила нормално рестартирайте и тествайте дали машината ви ще работи нормално на това напрежение. << Блокиране на автоматизирани атаки под Линукс и *BSD | *buntu файлови хранилища >> |
Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук,
но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора,
както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.
All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
|