Platon Technologies
neprihlásený Prihlásiť Registrácia
SlovakEnglish
open source software development oslavujeme 10 rokov vývoja otvoreného softvéru! Sobota, 21. apríl 2018
O nás
Magazín
Otvorený softvér
CVS
Služby
Index  »  Tipy a triky  »  Škálovanie frekvencie procesora

Návod na nastavenie škálovania frekvencie procesora

Autor: Ľubomír Host | Sekcia: Tipy a triky | Dátum: 2005-09-19

Škálovaním frekvencie procesora sa na notebooku dá zvýšiť výdrž batérie. Druhým efektom je to, že sa nebude tak často zapínať ventilátor a tým pádom bude váš miláčik oveľa tichší.

Spočiatku som používal aplikáciu cpufreqd, ale nebol som so škálovaním spokojný. Aplikácia zabera podľa mňa príliš veľa strojového času. Preto som hľadal alternatívu a najviac sa mi isvedčilo používanie modulu cpufreq_ondemand.

Na mojom notebooku Twinhead Efio! 123A mám takýto procesor:

# cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 6
model           : 8
model name      : mobile AMD Athlon(tm) XP-M (LV) 1500+
stepping        : 1
cpu MHz         : 863.707
cache size      : 256 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov
                  pat pse36 mmx fxsr sse pni syscall mp mmxext 3dnowext 3dnow
bogomips        : 1703.93

Podpora inštrukcií 3dnow zabezpečuje práve to, čo chceme dosiahnuť.

Konfigurácia jadra

Aby mi fungovalo škálovanie frekvencie podľa mojich predstáv, musím do jadra vložiť tieto moduly:

# modprobe cpufreq_ondemand
# modprobe cpufreq_powersave
# modprobe cpufreq_userspace
# modprobe powernow_k7

Tieto moduly sú dostupné po zapnutí týchto volieb pri kompilácii jadra:

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
# CONFIG_CPU_FREQ_DEBUG is not set
CONFIG_CPU_FREQ_STAT=m
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_TABLE=m

A ešte konkrétny modul pre môj procesor:

#
# CPUFreq processor drivers
#
# CONFIG_X86_ACPI_CPUFREQ is not set
# CONFIG_X86_POWERNOW_K6 is not set
CONFIG_X86_POWERNOW_K7=m
CONFIG_X86_POWERNOW_K7_ACPIý

Užívateľské prostredie

V zsh mám nadefinovanú takúto funkciu:

# function periodic is executed every $PERIOD seconds
export PERIOD=30
periodic()
{

# print actual CPU freq. file="/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq";

[ -f "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq" ] && file="/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq"; [ -f "$file" ] && sudo cat $file | \ awk '{ printf "CPU0: %g MHz", $1 /1024.0 ; }'

acpi }

ktorá mi vždy vypíše, akú mám aktuálnu frekvenciu procesora a stav baterky. Výstup mám ešte trošku ofarbený, ale to ponechávam ako cvičenie čitateľovi.

V mojom window manažéri IceWM mám nadefinované extra menu na manuálne doladenie parametrov škálovania frekvencie, ale tieto položky používam iba výnimočne.

menu "cpufreq" /usr/share/icons/Crystal/16x16/actions/wizard.png {
        prog "performance"      ""      sudo /usr/local/bin/governor performance
        prog "ondemand 30"      ""      sudo /usr/local/bin/governor ondemand up_threshold 30
        prog "ondemand 40"      ""      sudo /usr/local/bin/governor ondemand up_threshold 40
        prog "ondemand 50"      ""      sudo /usr/local/bin/governor ondemand up_threshold 50
        prog "ondemand 60"      ""      sudo /usr/local/bin/governor ondemand up_threshold 60
        prog "ondemand 70"      ""      sudo /usr/local/bin/governor ondemand up_threshold 70
        prog "ondemand 80"      ""      sudo /usr/local/bin/governor ondemand up_threshold 80
        prog "ondemand 90"      ""      sudo /usr/local/bin/governor ondemand up_threshold 90
}

Pretože nastavovanie takýchto parametrov jadra si vyžaduje administrátorské privilégia, musíme nakonfigurovať sudo. K tomu najprv vytvoríme pomocný skript, ktorý cez sudo umožňíme spúšťať s administrátorskými právami.

#!/bin/sh

# # /usr/local/bin/governor # # Developed by Lubomir Host 'rajo' <rajo AT platon.sk> # Copyright (c) 2005 Platon SDG, http://platon.sk/ # Licensed under terms of GNU General Public License. # All rights reserved. # # Changelog: # 2005-04-09 - created #

# $Platon$

BASE=/sys/devices/system/cpu/cpu0/cpufreq

if [ -f "$BASE/scaling_governor" ]; then echo "echo $1 > $BASE/scaling_governor"; echo $1 > "$BASE/scaling_governor"; fi

[ -z "$2" ] && exit 0 [ -z "$3" ] && exit 0

if [ -f "$BASE/$1/$2" ]; then echo "echo $3 > $BASE/$1/$2"; echo $3 > "$BASE/$1/$2"; fi

Teraz je čas nakonfigurovať sudo. Použite na to príkaz visudo. Mali by ste však zvládať základy editora Vim. Pridajte tieto riadky:

Cmnd_Alias  CPUFREQ         = \
                /bin/cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq, \
                /bin/cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq, \
                /bin/cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq, \
                /bin/cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies, \
                /bin/cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors, \
                /bin/cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq, \
                /bin/cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver, \
                /bin/cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor, \
                /bin/cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq, \
                /bin/cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq, \
                /usr/local/bin/governor

rajo ALL = (ALL) NOPASSWD: CPUFREQ

Snáď je to všetko, čo k pohodlnému nastavovaniu škálovanie frekvencie procesora potrebujete. Na skúmanie aktuálne nastavených parametrov sa pohrabte v adresári /sys/devices/system/cpu/cpu0/cpufreq/.

Veľa zdaru!

Ďalšie zdroje

http://fatcat.ftj.agh.edu.pl/~nelchael/
http://cpuspeedy.sourceforge.net/
http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils.html
http://cpufreqd.sourceforge.net
http://mnm.uib.es/~gallir/cpudyn/
http://www.goop.org/~jeremy/speedfreq/

Ľubomír Host

Čo je Platón?
Platón bol veľmi doležitý filozof starovekého Grécka, študent Sokratesa a učiteľ Aristotela. viac info...

Platon Group zastrešuje slovenskú skupinu vývojárov otvoreného softvéru. Vyvíja, spravuje, dokumentuje niekoľko úspešných open-source projektov.

Platon Technologies, s.r.o. je mladá a dynamicky rozvíjajúca sa spoločnosť, ktorá má za cieľ prinášať otvorené technológie do komerčnej a verejnej sféry.

Podporte nás

Výkonný webhosting
a multihosting

Platon Webhosting

Super rýchle servery
a profesionálna administrácia

Virtuálne, dedikované a manažované servery

Vývoj
Diskusia k článku
Michal Nowak treshold 2005-09-19 14:57
    RE: treshold 2005-09-19 14:51

   

 
Copyright © 2002-2006 Platon Group
Stránka používa redakčný systém Metafox
Na začiatok · Odkazový formulár · Prihláška
Upozorniť na chybu na PLATON.SK webstránke · Podmienky použitia · Ochrana osobných údajov