Portál AbcLinuxu, 8. května 2024 04:03

Cpufreq - dynamické škálování frekvence procesoru

18. 1. 2007 | Luboš Nondek
Články - Cpufreq - dynamické škálování frekvence procesoru  

Popis postupu zprovoznění: výběr ovladače, kompilace, nastavení a ladění. Praktické využití.

Použitý počítač a distribuce

Důvody, proč to zkusit

Co je to "CPU Frequency scaling"?

Česky to lze přeložit jako škálování (stupňování) frekvence procesoru. Procesor je schopný měnit za běhu svou taktovací frekvenci. Kromě základní nejvyšší frekvence může běžet také na nižších frekvencích, které jsou zlomky frekvence původní. Procesory Intel Centrino navíc pracují při proměnlivém napájecím napětí ("CPU Voltage scaling").

Ovladače jsou v jádru od počátku řady 2.6, nejdřív bylo možné frekvenci nastavit pouze staticky v rámci zadaného intervalu jako maximální (režim performance), minimální (powersave) nebo přímo zadat určitou frekvenci (userspace). Změny frekvence se pak děly pouze prostřednictvím démona nebo uživatelského programu, které při splnění určitých podmínek jádru předaly instrukci "změň režim". Typicky například nastavit režim na powersave při odpojení síťového zdroje nebo naopak na performance při sledování filmů.

V současné době už jsou v jádru i dva režimy s dynamickým stupňováním frekvence (nemohou být nastaveny jako výchozí). Při nich se frekvence mění v závislosti na využití procesoru. Rozhodování, jestli a jak změnit frekvenci, je možné ovlivňovat řadou parametrů předávaných jádru. Režim ondemand [na vyžádání] se objevil ve verzi 2.6.10, režim conservative [konzervativní] ve verzi 2.6.12.

Postup při kompilaci

V jádru se musí zapnout podpora cpufreq:

Power Managment options ->
        CPU Frequency scaling ->
                      CONFIG_CPU_FREQ=y

Vyberou se všechny moduly ovladačů, které připadají v úvahu. Ty se potom zkusí spustit pomocí modprobe -v. Ovladač, který se úspěšně natáhne, se může při příští kompilaci zakompilovat do jádra, ostatní se vyhodí. V mém případě funguje P4_CLOCKMOD. Při zavádění do jádra sice vypíše:

p4-clockmod: Warning: Pentium M detected. The speedstep_centrino
module offers voltage scaling in addition of frequency scaling.
You should use that instead of p4-clockmod, if possible.

Ale modul speedstep_centrino u mě nefunguje, protože procesor Celeron M škálování napětí neumí.

Potom jádro hlásí možnost škálování frekvence "na vyžádání":

p4-clockmod: P4/Xeon(TM) CPU On-Demand Clock Modulation available

Aby bylo možné přistupovat k informacím celého subsystému v adresáři /sys/devices/system/cpu/cpu0/cpufreq, musí se zakompilovat CPU_FREQ_STAT=y. Podrobnou šikovnou tabulku se statistickými údaji o době běhu v jednotlivých frekvencích a o přepínání mezi frekvencemi vytvoří volby CPU_FREQ_STAT_DETAILS=y a CPU_FREQ_STAT_DETAILS=y.

V jádru 2.6.19 jsou dostupné tyto režimy frekvence CPU (regulátory, anglicky "governors"):

Takhle vypadá celá moje sekce v souboru .config:

# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
# CONFIG_CPU_FREQ_DEBUG is not set
CONFIG_CPU_FREQ_STAT=y
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 is not set
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

#
# CPUFreq processor drivers
#
# CONFIG_X86_ACPI_CPUFREQ is not set
# CONFIG_X86_POWERNOW_K6 is not set
# CONFIG_X86_POWERNOW_K7 is not set
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_GX_SUSPMOD is not set
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_SPEEDSTEP_ICH is not set
# CONFIG_X86_SPEEDSTEP_SMI is not set
CONFIG_X86_P4_CLOCKMOD=y
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_LONGHAUL is not set

#
# shared options
#
CONFIG_X86_SPEEDSTEP_LIB=y

Uživatelské nastavení dynamického škálování procesoru

Jádro má jako výchozí celkem logicky nastaven režim performance (nejvyšší výkon). Jestliže chci spustit dynamické změny frekvence spravované regulátorem conservative, mám tyto možnosti:

Balíček cpufrequtils poskytuje příkaz cpufreq-info, který vypíše souhrnné informace, a cpufreq-set umí změnit regulátor frekvence nebo nastavovat min/max hodnoty frekvence, přičemž povolené frekvence lze získat příkazem cpufreq-info nebo čtením souboru /sys/devices/system/cpu/cpu0/cpufreq/scaling_avaliable_frequencies.

Můj výstup příkazu cpufreq-info:

cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
 driver: p4-clockmod
 CPUs which need to switch frequency at the same time: 0
 hardware limits: 175 MHz - 1.40 GHz
 available frequency steps:
 175 MHz, 350 MHz, 525 MHz, 700 MHz,
 875 MHz, 1.05 GHz, 1.23 GHz, 1.40 GHz
 available cpufreq governors: conservative, performance
 current policy: frequency should be within 175 MHz and 1.40 GHz.
                 The governor "conservative" may decide which
                 speed to use within this range.
 current CPU frequency is 350 MHz.

Parametry dynamických regulátorů

Oba dynamické regulátory akceptují několik parametrů, které značně ovlivňují jejich výsledné chování, a tím i komfort při práci na počítači. Výchozí hodnoty těchto parametrů a další údaje (min a max sampling_rate) lze zjistit ze souborů v adresáři /sys/devices/system/cpu/cpu0/cpufreq/jméno_regulátoru/*, byl-li regulátor spuštěn bez parametrů.

Výchozí nastavení regulátoru ondemand:

ignore_nice_load       0
sampling_rate          1000000
sampling_rate_max      500000000
sampling_rate_min      500000
up_threshold           80

Výchozí nastavení regulátoru conservative:

ignore_nice_load       0
freq_step              5
sampling_down_factor   1
sampling_rate          10000000
sampling_rate_max      705032704
sampling_rate_min      5000000
up_threshold           80
down_threshold         20

Vysvětlení parametrů

(přeloženo a doplněno z man cpufreqd.conf)

sampling_rate
Jak často governor zjišťuje využití CPU. Zadává se v mikrosekundách nebo procentech minimální a maximální platné hodnoty. Podporované přípony: '%' pro procenta, 's' pro hodnotu v sekundách, 'm' pro hodnotu v milisekundách nebo 'u' pro hodnotu v mikrosekundách (výchozí). Rozsah povolených hodnot lze zjistit v /sys/../../cpufreq/jméno_regulátoru/sampling_rate_max a _min.
up_threshold
Jaké průměrné využití CPU způsobí, že se governor rozhodne přepnout na vyšší frekvenci. Ačkoli hodnota je governorem interpretována jako procenta, nepřipojuje se pro tento parametr v cpufreqd.conf '%'.
down_threshold (pouze conservative)
Jaké průměrné využití CPU způsobí, že se governor rozhodne přepnout na nižší frekvenci. Je to opak up_threshold.
sampling_down_factor
Jak rychle bude frekvence snižována v porovnání s tím, jak rychle je zvyšována. Např. když je hodnota 5, frekvence se bude snižovat 5× pomaleji než zvyšovat. To znamená, že frekvence se zvýší okamžitě, jak je zjištěno vyšší než "up_threshold" využití CPU, ale na snížení se čeká pět cyklů trvajících dobu "sampling_rate".
ignore_nice, ignore_nice_load
Určuje, jestli mají být 'nice' procesy považovány za využití CPU. Je to booleanovská hodnota. Je-li nastaveno na 1, 'nice' procesy nebudou považovány za využití CPU. Parametr ignore_nice byl od jádra 2.6.16 přejmenován na ignore_nice_load. Obě hodnoty parametru jsou ve cpufreqd.conf akceptovány nezávisle na verzi jádra.
freq_step (pouze conservative)
O kolik má být frekvence zvýšena/snížena, jestliže se governor rozhodne ji zvyšovat/snižovat. Hodnota je v procentech z maximální platné frekvence (zjistitelné z výstupu cpufreq-info). Jestliže mám tedy například osm možných frekvencí, změna mezi dvěma sousedními je 12,5 %. Zadám-li tedy freq_step=25, může se při požadavku na rychlé zvýšení frekvence vždy jedna "úroveň" přeskakovat. Ačkoli hodnota je regulátorem interpretována jako procenta, nepřipojuje se pro tento parametr v cpufreqd.conf '%'.

Vlastní nastavení parametrů v cpufreqd.conf

V dokumentaci k jádru se doporučuje pro přenosné počítače regulátor conservative, který reguluje frekvenci plynuleji a po menších skocích než ondemand (to je dáno jednak výchozími nastaveními a také tím, že má sampling_rate_min=5000000 mikrosekund, (tedy 5 sekund)! Akceptuje důležité parametry down_thresholdfreq_step, lze ho detailněji ovlivnit. Já jsem si v cpufreqd.conf vytvořil profily pouze s ním.

S výchozími parametry měl conservative tendenci zůstávat pořád na nejnižší povolené frekvenci, pokud se zrovna nekompilovalo jádro nebo nebyl spuštěný nějaký hodně neúsporný spořič obrazovky. Moje snaha je, aby po dobu, kdy u počítače sedím a aktivně něco dělám, byla frekvence vysoká (a odezva programů rychlá), a aby se výrazně snížila, když si jenom něco čtu nebo od počítače na chvíli odejdu. Není třeba, aby se měnila po každém pohybu myši, navíc regulátor frekvenci zvyšuje vždy s určitým zpožděním, a to je už stejně pozdě. Aby nebyla odezva tak pomalá, bylo třeba ztížit snižování a zjednodušit zvyšování frekvence. Po nějaké době ladění jsem dospěl k tomuto:

Příklad konfiguračního souboru cpufreqd.conf

[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=20     # dlouhý, stejně dostane zprávu o stavu
                     # baterky a AC přes acpid.socket a jinak
                     # nic nevyhodnocuje
verbosity=5          # nejvyšší je 7
#enable_remote=1
#remote_group=root
[/General]

#[acpi]
acpid_socket=/var/run/acpid.socket  # při startu cpufreqd píše,
                                    # že socket není obsluhován(?),
                                    # ale funguje to
#[/acpi]

[Profile]
name=Conservative
minfreq=350000          # aby nepadal až na 175000
maxfreq=1400000
policy=conservative
up_threshold=50         # snadno frekvenci na požádání zvyšovat
down_threshold=5        # snižovat, jen pokud se opravdu nic neděje
sampling_down_factor=5  # ještě víc zpozdit snižování frekvence
sampling_rate=5000000   # nejčastější možný interval kontroly využití CPU
freq_step=38            # může přeskočit ob tři úrovně
[/Profile]

[Profile]
name=Conservative Low
minfreq=175000
maxfreq=875000          # nezvyšuj frekvenci na maximum
policy=conservative
up_threshold=70         # trochu méně snadné zvyšování frekvence
down_threshold=10       # sniž, je-li využití CPU nižší než 10 %
sampling_down_factor=2  # snižuj trochu snadněji než v předchozím
sampling_rate=5000000
freq_step=25            # může přeskočit ob dvě úrovně
[/Profile]

######

[Rule]
name=AC Rule
ac=on
profile=Conservative
[/Rule]

[Rule]
name=AC Off - Low Battery
ac=off
battery_interval=0-50
profile=Conservative Low
[/Rule]

[Rule]
name=AC Off - High Power
ac=off
battery_interval=50-100
profile=Conservative
[/Rule]

V sekci general je důležitý parametr poll_interval, který určuje, po kolika sekundách spustí cpufreqd kontrolu platnosti podmínek jednotlivých podmínek v [rule] - pravidel; vypočítá pro každé pravidlo skóre platnosti, vyhodnotí a případně změní platný profil.

Podle mého názoru je lepší být umírněný. Nemít příliš krátký poll_interval a nevytvořit si velké množství podmínek v sekcích [rule], které cpufreqd zkoumá a vyhodnocuje, ačkoli to formát tohoto konfiguráku umožňuje. Stačí spustit cpufreqd s parametrem verbosity=7, a je vidět, co to pokaždé dělá... Pak je třeba nezapomenout a rychle verbositu zase snížit, aby se zabránilo neustálým přístupům na disk a přeplnění logů!

Trochu nešikovné je zjišťovat při nastavování cpufreqd pořád aktuální frekvenci z konzole, ale mám Fluxbox a nepodařilo se mi na to sehnat žádný nezávislý applet. V GKrellM je plugin gkx86info, který bohužel udává pořád stabilních 1396 MHz. Pak jsem objevil applet pro xfce-panel; sice se mi nechtělo spouštět celý panel kvůli jedinému appletu, ale pro období vylaďování parametrů mi nakonec nic jiného nezbylo. Debianní balíček se jmenuje xfce4-cpufreq-plugin.

Zkušenosti po nějaké době používání

Notebook zdaleka tolik "netopí" jako dřív. Při normální práci v grafickém režimu se spuštěným internetem, OpenOffice.org, Firefox, Adobe Reader atd. je teplota v termální zóně THRM do 45°C. Ani při intenzivním využití (kompilace jádra) se procesor nestihne tak zahřát, aby se spustil větráček. Kompilace trvá 7 minut, teplota nepřesáhne 60°C. To mě samotného překvapilo, dříve se spustil větráček při kompilaci tak desetkrát a stejně byl počítač dost rozžhavený.

Díky celkem agresivnímu nastavení parametrů v cpufreqd.conf jedu většinu času práce v grafice na vyšších frekvencích 875 MHz a 1,40 GHz. Když od počítače odejdu, sníží se během půl minuty až minuty frekvence na minimum (u mě 350 MHz). Při opětovném přechodu do grafického režimu to chvíli trvá, než se vyšplhá zase vzhůru. Proto mám spodní hranici omezenou na 350 MHz, aby mi to nepadalo až na 175 MHz, kdy už je docela otrava třeba spouštět OpenOffice.org. Režimy AC Off příliš nepoužívám, nanejvýš když si ve vlaku něco čtu - na to bohatě stačí i nízké frekvence. Je ale jasné, že občas je pomalejší odezva znát. Možná časem přejdu na regulátor ondemand. Když jsem ho ale zkoušel, tak mě (kromě rychlejší odezvy počítače) zarazil mnohonásobně vyšší počet přepnutí mezi frekvencemi, který víceméně odpovídal poměru sampling_rate obou regulátorů, tj. desetkrát více přepnutí taktu za odpovídající dobu práce na počítači.

Protože nejsem žádný odborník na HW, zajímalo by mě, jaký má přepínání frekvence procesoru vliv na životnost procesoru a ostatních komponent počítače. Některé procesory mají prý při změně taktu určité období latence, to jsem ale u sebe nepozoroval, takže by mi časté změny nevadily. Ale nechci si notebook oddělat rychleji, než je nutné. Takže jestli se o tom z diskuze něco navíc dozvím, budu jen rád.

Související články

Zpomalte si procesor
Přetaktování - Jak zvýšit výkon počítače
Seriál: Jak se píše procesor

Další články z této rubriky

Úvod do Dockeru (1)
Paralelizace běžných činností v konzoli pomocí GNU Parallel
Unixové nástroje – 26 (triky pro práci v Bashi)
Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
Linux: systémové volání splice()

Diskuse k tomuto článku

CIJOML avatar 18.1.2007 00:17 CIJOML | skóre: 58 | Praha
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
My co nechceme mit dalsi pamet sezranou dalsim procesem a navic to chceme mit presnejsi pouzijeme skalovac vestaveny primo v kernelu a to ONDEMAND. Clanek timto prohlasuji za absolutne zastaraly a zbytecny. HOWK.
18.1.2007 00:46 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
A proč nepoužít na notebooku conservative?
18.1.2007 08:48 ext3fs
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Zase tak zbytečné se mi to nezdá. Třeba v létě kdy je už tak dost horko, na nooteboku běží delší kompilace, tak se CPU může docela dost zahřát a tím i celý notebook. Aby nedošlo k poškození nebo zybtečnému teplotnímu namáhání, tak může nějaká ta aplikace typu cpufreq (a jiné) v závyslosti na teplotě nastavit chlazení CPU (throttling) a další jiné věci. Snížení výkonu na úkor (ne)zhoření notebooku je docela dobré. A tohle právě Speedstep v jádře neřeší.
18.1.2007 16:28 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Aby nedošlo k poškození nebo zybtečnému teplotnímu namáhání, tak může nějaká ta aplikace typu cpufreq (a jiné) v závyslosti na teplotě nastavit chlazení CPU (throttling) a další jiné věci.
Přístroj, který dlouhodobě nevydrží pracovat s výkonem, který je deklarován výrobcem, je zmetek. A je úplně jedno, jestli se jedná o notebook, hudební zesilovač nebo mixér - reklamovat.

(Pozn. Závyslost s tvrdým y to už je fakt síla.)
Quando omni flunkus moritati
18.1.2007 17:45 l_n | skóre: 15 | Bednárec
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
To máš sice pravdu, ale ten notebook byl svého času jeden z nejlevnějších na trhu, a určitě nejlevnější od HP, byl vybavený pouze freedosem. Těžko bych reklamoval horký NB, ve freedosu by třeba nebyl. Výrobce s přehříváním počítá a varuje před ním v manuálu radami jako zajistěte dostatečný přívod vzduchu, stavte jen na rovnou podložku, v případě přehřátí ho vypněte atd.
18.1.2007 17:50 ext3fs
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Tak se někdy podívejte na provozní podmínky (teploty) co uvádí výrobce notebooku, nic moc. Proč je tedy v jádře Speedstep a podobné věci? Asi ne pro srandu. Možná když už ne pro šetření notebooku samotného, tak pro šetření baterky. A když se k tomu přidá uspávání dalšího hw (wifi, bt,hdd ...) pak už to na baterku má pozitivní odezvu dost velkou. Výrobce rozhodně negarantuje nic takového, že se může HW používat permanentně na plný výkon. To by asi neřešil věci jako je Power management atp, že?

Ad má hrubka. Když někdo u nás na fakultě dělal oponenta diplomce o které nic nevěděl, tak se zaobíral pravopisem a vzhledem. Hmmm...takových lidí je asi dost.
19.1.2007 01:46 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Výrobce rozhodně negarantuje nic takového, že se může HW používat permanentně na plný výkon. To by asi neřešil věci jako je Power management atp, že?
Power management nesouvisí s tím, jestli můžu nebo nemůžu něco používat na plný výkon. Power management je od toho, aby snížil spořebu HW, když se nepoužívá.
Ad má hrubka. Když někdo u nás na fakultě dělal oponenta diplomce o které nic nevěděl, tak se zaobíral pravopisem a vzhledem.
Když někdo neumí pravopis, tak většinou umí vymyslet sto dvacet důvodů, kterými svou nechopnost obhajuje.
Quando omni flunkus moritati
18.1.2007 13:42 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Pri používaní ondemand som mal pocit, že je systém nejaký ospalý. Ako keby mu trvalo 0.5 až 1 sekundu než prešiel z nižšej frekvencie na vyššiu, zatiaľ čo opačným smerom prechádzal ochotnejšie. Možno to závisí od toho čo človek konkrétne robí. Ja som to nakoniec prestal používať (resp. po experimentoch som dospel k tomu, že mi to nevyhovuje). Tiež preto, že to nebol NB ale normálny desktop a nepotreboval som teda šetriť batériu.
18.1.2007 20:02 Pavel Píša | skóre: 18 | blog: logic
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Ondemand má tu vlastnost, že okamžitě snižuje rychlost procesoru na minimum, pokud zátěž klesne pod limit. Než doběhne interval pro další zjišťování zátěže CPU, tak je systém velmi rozespalý.

Conservative je v tomto směru výhodnější. Bohužel ani tento regulátor nejde nastavit tak, aby frekvenci zvyšoval velmi krátce po zvýšení zátěže. Nejde ani nastavit větší krok v procentech pro zvyšování frekvence.

Další potíží je, že přepínání frekvencí je prováděno procesem s relativně nízkou prioritou. Z toho vyplývá, že při použití systému pro RT aplikace či multimedia může při náhlém přetížení procesoru běžícího na nízké frekvenci dojít ke stavu, kdy již nemá cpufreq šanci navýšit výkon. Bylo by pěkné, vymyslet, jak by zátěž RT procesy zvyšovala frekvenci přednostně. Bohužel doba přepnutí frekvence je také pro některé případy dost dlouhá => velké latence.

Zdá se, že můj příspěvek vyznívá negativně. To jsem ovšem neměl v úmyslu. CPUfreq chodí i na embedded hardware moc hezky a je je zajímavé sledovat na ampérmetru, jak se podle zátěže proud systému mění v našem případě od 12 do 200 mA a pak zase postupně klesá.
18.1.2007 20:59 l_n | skóre: 15 | Bednárec
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Nejde ani nastavit větší krok v procentech pro zvyšování frekvence.

Právě že jde, a to parametrem freq_step popsaným v článku, ale latence zůstává.

18.1.2007 22:09 Pavel Píša | skóre: 18 | blog: logic
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Nenapsal jsem to přesně, krok nastavovat lze a pokusy jsem s ním dělal, bohužel je ale shodný pro zvyšování i snižování. Přitom zvýšit je potřeba často velmi rychle. Chělo by to buď individuální nastavení kroku pro zvyšování nebo možnost zadat mez zátěže, při které se aplikuje větší krok. Naopak u snižování je výhodnější krok menší, protože zátěž většinou kolísá a tím to není ideální ani po použití zpomalení poklesu.
18.1.2007 00:54 Ritchie | skóre: 27 | blog: Ritchie's | Berlin
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
Neskromně odkáži na svůj zápisek Cpufreq – pro procesory mnoha frekvencí ve svém zdejším blogu.
AraxoN avatar 18.1.2007 00:57 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
Mám presne ten istý noťas (HP nx9020), ale ten blahodárny vplyv na teplotu procesora som nejak nepozoroval, ani keď som nastavil governora na powersave a min. frekvenciu nechal na 162MHz. Vetrák sa vždy spustí pri dosiahnutí teploty 65˚C, a pokračuje až kým neklesne pod 60˚C. Potom sa vypne a teplota znova stúpa, takže to chodí dookola od 60 po 65 a späť. Zato odozva GUI (Gnome) je pri 162MHz pekne na pikaču...
18.1.2007 02:55 l_n | skóre: 15 | Bednárec
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Proto jsem se s tím taky páral, po nějaké půlhodině byl počítač horký a větráček se spustil každých pár minut. Mám na tom dualboot a XP-čka i Linux topili úplně stejně. Teď jsem fakt už měsíc větrák neslyšel, pokud teda nenabootuju do widlí. Z tý radosti jsem taky napsal tenhle článek. A ohledně odezvy, souhlasím, pod 350MHz je to dobrý jen na konzoli. Ale 162MHz, to máš Celeron 1296?
18.1.2007 03:42 Jan Olšan
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Jaj, mám PII @ 300Mhz. Nemusíte strašit. Souhlasím, že když jsem ho přiškrtil na 75 Mhz...

BTW. Neví někdo, proč "powersave -R" /nebo jak je ten přepínač pro spočítání frekvence/ ukazuje hodnoty tak od 8 do 30 Mhz? Mám to brát tak, že ten algoritmus zkrátka (v mém případě) nefunguje?

Mám opensuse 10.2 na Dell Latitude Cpi D300XT, škálování v kernelu /ačkoliv jsem měl za to, že to tento PII neumí/. Rovněž mám jakési dynamické zpomalování cpu nastavené v BIOSU, o kteréžrto možnosti za tučňáka netuším, co se pod ní myslí...
AraxoN avatar 18.1.2007 09:03 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Je to Celeron M 1.3GHz... pozerám že to nie je úplne ten istý čo máš ty - ty máš 1.4GHz. Je možné že tá 1.3 je nejakej staršej revízie čo topí viac?
18.1.2007 10:57 Petr Hlávka
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Je to zrejme tim, ze Celeron M maji speedstep vypnuty, podporuji pouze zmenu frekvence (Pentium M umi vypinat i casti procesoru a snizovat napeti) a ta neni na setreni tak efektivni - vice info.
AraxoN avatar 18.1.2007 11:40 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
V oboch prípadoch sa jedná o Celeron M a moduláciu cez p4_clockmod. Akurát jeden (ten môj) je o 100MHz pomalší ale topí o poznanie viac.
18.1.2007 16:21 Martin
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Je tomu opravdu tak. Procesory vyrabene 90nm technologii "topi" opravedu mene. Viz CELERON M
18.1.2007 08:51 ext3fs
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Některé NB nespouští větrák jen dle teploty,ale také dle zatížení CPU. Aspoň tedy u mého Lenova C100 to tak zřejmě je. Na víc si hlídá teplotu a otáčky větráku sám hw a tím pádem to neřeší ACPI. To mne trochu zarazilo,ale na druhou stranu i tak dobře. Protože ne vždy je ACPI korektní :))
Josef Kufner avatar 20.1.2007 21:30 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Za to, že to řeší přímo HW jsem jen rád. Tyhle věci by software (operační systém ani bios) řešit vůbec neměl.
Hello world ! Segmentation fault (core dumped)
Valoun avatar 18.1.2007 15:58 Valoun | skóre: 30 | blog: Psavec | Středočeský kraj
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
To je zajimave. Mam take HP nx9020, a pouzivam CPUFreq (nastavení). HP ma ten vetrak nastaveny napevno, nicmene jeho spusteni temer jinak nez kompilaci kernelu nebo konverzi zvuku/videa nedosahnu. Takze pri bezne praci se mi z cely den nepusti vetrak ani jednou.

Ano, pri 175 MHz toho uz moc neudelate. Ja to pouzivam pouze kdyz nemam elektrinu a baterie jde pod 25%, mam to zaroven jako signal, ze je cas prestat pracovat.
18.1.2007 08:03 Roman Schulz | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
Děkuji za dobrý tip, přesně tento typ notebooku vlastním ale kdysi ve windows se mi nepodařilo změnu frekvence žádným programem nastavit. Doufám že teď když pracuji v linuxu tento problém vyřeším;-)
18.1.2007 08:25 Petr Zelenka | skóre: 24 | Semice/Stuttgart (Sindelfingen)
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
Jak moc se vám toto nastavení projeví na výdrži baterie?
A teď si uvědomte, jaký je vztah mezi krychlí a motýlem.
18.1.2007 11:08 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Fujitsu-E8020 ma maximum 2000 MHz a minimum 800 MHz. Vydrzi 2 resp. 3,5 h.
18.1.2007 21:04 l_n | skóre: 15 | Bednárec
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Bez 2,5 h, s přes tři. Přesně jsem to neměřil, ale rozdíl +- půl hodiny.
18.1.2007 09:09 Milan
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
Změna frekvence mi funguje na notebooku jen při provozu na baterie. Pokud mám připojené napájení ze sítě, frekvence zůstává vždy maximální, přesto že se do adresáře /sys/devices/system/cpu/cpu0/cpufreq/ zapisuje nastavený výkonostní profil. Čím by to mohlo být?
18.1.2007 14:43 mek
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
proste si zedituj /etc/cpufreqd.conf a pri sekcii AC zmen mod z performance na iny, napr. na ondemand
18.1.2007 14:50 Milan
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Funguje to, diky.

Co to je cpu throtling (přiškrcení), k čemu je to dobré, jak se to liší od škálování frekvence?
19.1.2007 08:30 Martin
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Mezi instrukce procesoru se vkládají NOPy (instrukce která "nic" nedělá). Když procesor "nic" nedělá, nemění se v něm signály, nenabíjí se a nevybíjí se parazitní kapacity, neteče proud při změně signálu, šetří se tím energie.
19.1.2007 13:49 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
...šetří se tím energie.
... ale méně, než když se použije škálování frekvence (Navíc kolik energie se throttlingem ušetří, je trochu sporné, protože ta práce se nakonec stejně musí někdy udělat). U současných procesorů se throttling používá spíš když je procesor přehřátý a je potřeba ho vychladit.
Quando omni flunkus moritati
21.1.2007 16:55 Roman
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Možná umíš pravopis, ale fyzika je pro tebe hotová španělská vesnice a o zákonu zachování energie se ti ani nesnilo.
21.1.2007 17:47 Jan Olšan
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
No, pokud narážíte na to šetření energií, tak ono to skutečně zchladí - pamatujute na to video s pálením procesorů? Když z P4 (northwood!) sundali heatsink, tak se sice těžce zpomalilo, ale přežilo a nevypnulo, díky throttlingu.
21.1.2007 22:57 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Zákon zachování energie s tématem souvisí jak?

A nebo ještě jinak ... jestli chceš říct, že procesor, který dělá nějakou práci a mezi to vkládá nop, spotřebuje stejně nebo dokonce méně energie, než když ho necháš tu práci udělat a pak mu snížíš takt a zastavíš ho (hlt), tak fyzice možná rozumíš teoreticky, ale v praxi je to horší...
Quando omni flunkus moritati
houska avatar 18.1.2007 09:12 houska | skóre: 41 | blog: HW
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
...a pokud budete mit smulu na notebook tak budete mit problemy
18.1.2007 09:49 Petr Bartel
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
Mel bych par dotazu :

mam takovouhle konfiguraci
cpuinfo
model name      : Genuine Intel(R) CPU           T2300  @ 1.66GHz

cpufreq-info
hardware limits: 1000 MHz - 1.67 GHz
available frequency steps: 1.67 GHz, 1.33 GHz, 1000 MHz

.config
# CPUFreq processor drivers
#
# CONFIG_X86_ACPI_CPUFREQ is not set
# CONFIG_X86_POWERNOW_K6 is not set
# CONFIG_X86_POWERNOW_K7 is not set
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_GX_SUSPMOD is not set
CONFIG_X86_SPEEDSTEP_CENTRINO=y
CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y
# CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE is not set
CONFIG_X86_SPEEDSTEP_ICH=y
# CONFIG_X86_SPEEDSTEP_SMI is not set
# CONFIG_X86_P4_CLOCKMOD is not set
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_LONGHAUL is not set

#
# shared options
#
# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
CONFIG_X86_SPEEDSTEP_LIB=y
# CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK is not set
Tak by me zajimalo jestli to mam dobre, a proc muj procesor tvrdi ze umi jen tri frekvence, popr. co bych mel udelat proto aby to fungovalo lepe ?

Diky
Tomáš Bžatek avatar 18.1.2007 11:37 Tomáš Bžatek | skóre: 29 | Brno
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Tohle je totiz samotny SpeedStep, autor v clanku popisuje frekvencni modulaci, kterou ovsem provadi chipset a neni tak ucinna jako EIST. Mam stejny procesor (Core Duo T2300e) a mam taky jen tri kroky. To ovsem staci, protoze na nejnizsim (1.0 GHz) ma procesor snizene napajeni a kdyz si tuto frekvenci locknu, ani pri zatezi se nepousti vetrak a celkova spotreba procesoru pri vyuzitych obou jadrech je minimalni.
Koupim litajiciho tucnaka
18.1.2007 10:55 spectrum | skóre: 29 | blog: spectrumblog
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
Návod dobrý, ale připadá mi to jako manuál k atomové ponorce. (I když jsem ho nikdy neviděl.) :)
18.1.2007 11:28 pj
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
me taky, proto pouzivam toto: Notebook Hardware Control (NHC) http://www.pbus-167.com/ plne funkcni tak behem 5min :-)
18.1.2007 11:52 ext3fs
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
To je ale projekt pro Windows, nepletu-li se? :)
18.1.2007 11:39 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Návod je pro uživatele hardcore distribucí. Těm ostatním to funguje správně hned po instalaci. ;-)
18.1.2007 12:48 spectrum | skóre: 29 | blog: spectrumblog
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Tak proč je nahoře napsána použitá distribuce Debian Etch. To mi moc hardcor nepřijde. :-)
18.1.2007 14:56 David Jaša | skóre: 44 | blog: Dejvův blog
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
s/hardcore/DoDo/ ;-)
18.1.2007 13:07 Oldak | skóre: 10 | Němčice nad Hanou
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
Jen dodam, ze frequency scaling neni v linuxu vzdycky uplne bez problemu. Osobne mam Prestigio Nobile 157 s procesorem Pentium M 1.7 Ghz (Dothan). Jde asi o nejaky zvlastni typ, ke kteremu se speedstep-centrino z vanilla kernelu a ani ze vsech mnoh vyzkousenych distribuci (Fedora, Slax, Knoppix, Aurox, Mandriva) nezna a procesor se proste nehne pres 598 MHz. Az dlouhe googlovani a nalezeni nejake neoficialni verze souboru speedstep-centrino.c, jeho nasledna vymena a rekompilace kernelu pomohly.

Nedavno jsem zkousel FreeSBIE 2.0 a musim rict ze me velice prijemne prekvapilo. Staci kldload cpufreq a spustit powerd a je hotovo. V soucasne dobe mam na notebooku Fedoru 6 s vlastnim kernelem rady 2.6.18 a protoze me stale nebavi kompilovat novy kernel a k nemu pripadne dalsi drivery (wifi, grafika), tak s nejvetsi pravdepodobnosti bude fedora na notebooku vystridana certikem hned jak vyjde FreeBSD 7. Jinak problem jsem nahlasil do bugzilly kernelu, ale nikdo se na to uz par mesicu nejspis ani nepodival. Je to skoda. Mel jste nekdo stejny problem? A jestli ano, jak jste ho resili?

Olda
DjAARA avatar 18.1.2007 13:16 DjAARA | skóre: 32 | Praha|Náklo|Olomouc
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Mám Prestigio Nobile 157, s procesorm na stejném jádře, ale nižší frekvencí - 1,6GHz. Vše funguje naprosto bezproblémově již od toho co jsem notebook koupil cca 2.5 roku zpátky.

BTW: zkusil bych se podívat jak je nastaven BIOS a také na jeho revizi. A případně ze stránek AOpen.com stáhnout nový BIOS. Hledejte model AOpen 1557-J.
18.1.2007 23:21 Drašar | skóre: 27 | Velký Týnec
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Ja mam Pentium M 735 Dothan / 1.70 GHz a musel jsem take pouzit tento patch, abych mohl pouzit modul speedstep-centrino. Jinak mne slapal jen acpi-cpufreq a ten myslim neumi menit napeti, jenom frekvenci.
Patička
DjAARA avatar 21.1.2007 12:35 DjAARA | skóre: 32 | Praha|Náklo|Olomouc
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Musel? Jaký kernel používáte?

Co jsem se díval do toho patche, tak tam jsou tabulky pro získání napětí k dané frekvenci. Ale to se používalo u jádra BANIAS (proto jsou v základu v speedstep-centrino.c jen tyto tabulky), jádro DOTHAN by mělo používat ACPI pro získání správných hodnot.

Jinak nastavení kernelu by mohlo vypadat takhle:
<*>   Intel Enhanced SpeedStep
  [*]     Use ACPI tables to decode valid frequency/voltage pairs
  [ ]     Built-in tables for Banias CPUs
21.1.2007 16:46 Drašar | skóre: 27 | Velký Týnec
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Musel, jinak se mi ten modul speedstep-centrino vubec nezavedl. Nefunguje ani pouziti ACPI pro ziskavani techto informaci a to na zadnem kernelu rady 2.6. Vypada to, ze chyba nejspis nebude v CPU, ale selze neco jineho pri nacitani tech paru pres ACPI.
Patička
DjAARA avatar 22.1.2007 08:22 DjAARA | skóre: 32 | Praha|Náklo|Olomouc
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Pak bych se podíval po tom, jestli náhodou nepoužíváte nějaký předpotopní BIOS.

Já sám mám poslední betu, ale to jen kvůli Atheros Wi-Fi, kterou jsem vložil namísto původní IPW2200. Jinak mi ve Windows nefungovalo tlačítko pro její zapnutí. Dnes už bych to ani neřešil.
# dmidecode | grep "BIOS Information" -A4
BIOS Information
        Vendor: Phoenix Technologies LTD
        Version: R01-C1L
        Release Date: 03/25/2005
        Address: 0xE59F0
22.1.2007 17:49 Drašar | skóre: 27 | Velký Týnec
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
BIOS uz jsem upgradoval, mam posledni verzi. Ale zadna zmena. Podle me timto neduhem trpi vsechny laptopy od urcitych vyrobcu, napr. Acer jako u me.

BTW nevi nekdo, jak nacitani paru frekvence/napeti resi Widle? Tam mi to totiz asi funguje :o)
# dmidecode | grep "BIOS Information" -A4 -m1
BIOS Information
        Vendor: ACER
        Version: 3A20
        Release Date: 01/31/2005
        Address: 0xE5240
Patička
18.1.2007 15:33 Ľubomír Host | skóre: 19 | Bratislava
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
Aj ja si prihrejem polievocku. Mozno sa niekomu moje skriptiky a konfiguracia IceWM budu hodit: Clanok na Platon.SK
-- http://blog.hostname.sk
21.1.2007 11:58 me
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
grep flags /proc/cpuinfo:

flags	:fpu vme de pse tsc msr mce cx8 apic sep mtrr pge mca
 cmov pat clflush dts acpi mmx fxsr sse sse2 tm pbe
Zvidaveho ctenare by jiste zajimalo, ktery z vypsanych flagu znamena, ze lze menit frekvenci CPU.
22.1.2007 18:43 fakenickname | skóre: 42 | blog: fakeblog
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
to se pry pozna v /proc/cpuinfo na radce stepping coz je udajne pocet moznych frekvenci..
22.1.2007 23:07 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Stepping není počet možných frekvencí, ale verze procesoru. Něco jako máš verzi jádra 2.6.16, tak procesory mají verze family.model.stepping
Quando omni flunkus moritati
22.1.2007 23:11 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Tady jsou přesnější informace
Quando omni flunkus moritati
23.1.2007 20:38 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru

Zajímavá idea…

  lion:~ # egrep '^stepping' /proc/cpuinfo
  stepping        : 0

Co teď? :-)

24.1.2007 15:28 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Máš procesor, který funguje na nemožné frekvenci.
Quando omni flunkus moritati
25.1.2007 21:17 hubacek
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
Vyzkoušel jsem na obyčejném PC několik distribucí které už po instalaci řídili CPU od 50 až po 100% frekvenci. Suse to má od verze tuším 9.0 Fox Desktop, pak také Mandriva ale u té se to musí doinstalovat a nakonfigurovat.CPU je Athlon 64 a běhá mezi 1 až 2GHz, to podle zatížení. Rozhodně je PC daleko chladnější než bez regulace. pepca
menphis avatar 6.3.2007 00:19 menphis | skóre: 22 | blog: menphis_blog
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
Odpovědět | Sbalit | Link | Blokovat | Admin
nevite kde v openSuSe 10.1 najit konfiguracni soubor cpufreqd.conf v /etc neni a jinde jsem ho taky nenasel ? pritom sluzbu cpufreq- v distribuci mam .
6.3.2007 00:32 Drašar | skóre: 27 | Velký Týnec
Rozbalit Rozbalit vše Re: Cpufreq - dynamické škálování frekvence procesoru
A co takhle si vylistovat obsah toho baliku? Popr. mrknout do /usr/share/doc/<package_name>/. ;-)
Patička

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.