arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
334 lines (212 loc) • 11.4 kB
Markdown
Related articles
* [Laptop Mode Tools](/index.php/Laptop_Mode_Tools "Laptop Mode Tools")
* [powernowd](/index.php/Powernowd "Powernowd")
[cpufrequtils](https://www.archlinux.org/packages/?q=cpufrequtils) je set utilít navrhnutý pre *CPU frequency scaling*, technológiu využívanú primárne na notebook-och. Táto technológia umožňuje operačnému systému meniť frekvenciu CPU v závislosti na aktuálnom vyťažení systému.
Tento článok pokrýva inštaláciu a základnú konfiguráciu balíčka `cpufrequtils`.
## Contents
* [1 Inštalácia](#In.C5.A1tal.C3.A1cia)
* [2 Konfigurácia](#Konfigur.C3.A1cia)
* [2.1 Ovládač frekvencie CPU](#Ovl.C3.A1da.C4.8D_frekvencie_CPU)
* [2.1.1 Intel](#Intel)
* [2.1.2 AMD](#AMD)
* [2.2 Načítanie pri boot-e](#Na.C4.8D.C3.ADtanie_pri_boot-e)
* [2.3 Pridelenie práv v Gnome](#Pridelenie_pr.C3.A1v_v_Gnome)
* [2.4 Cpufrequtils a Laptop Mode Tools](#Cpufrequtils_a_Laptop_Mode_Tools)
* [2.5 Governors](#Governors)
* [2.5.1 Zmena prahu ondemand režimu](#Zmena_prahu_ondemand_re.C5.BEimu)
* [2.5.2 Interakcia s ACPI](#Interakcia_s_ACPI)
* [2.6 Daemon](#Daemon)
* [3 Možné problémy](#Mo.C5.BEn.C3.A9_probl.C3.A9my)
## Inštalácia
Balíček [cpufrequtils](https://www.archlinux.org/packages/?name=cpufrequtils) je dostupný v repozitáry [extra]:
```
# pacman -S cpufrequtils
```
## Konfigurácia
Konfigurácia zmeny frekvencie CPU pozostáva z 3 častí:
1. Načítanie správneho ovládača
2. Načítanie požadovaných tzv. *governors*
3. Konfigurácia a načítanie daemona.
### Ovládač frekvencie CPU
Aby Vám zmena frekvencie pracovala správne, operačný systém musí poznať limity CPU. Na splnenie tejto požiadavky sa načítavá modul kernelu, ktorý dokáže čítať a riadiť špecifikácie CPU.
Väčšina dnešných notebook-ov a PC môže používať ovládač **`acpi-cpufreq`**. Ďaľšími možnosťami sú ovládače `p4-clockmod`, `powernow-k8` a `speedstep-centrino`. Aby ste videlikompletný zoznam dostupných ovládačov, spustite nasledovný príkaz:
```
$ ls /lib/modules/2.6.??-ARCH/kernel/drivers/cpufreq
```
**Tip:** Pre AMD "K10" CPU ako napr. Phenom X4, použite ovládač `powernow-k8`.
#### Intel
Manuálne načítanie ovládača:
```
# modprobe acpi-cpufreq
```
Ak máte starší procesor Intel, vyššie uvedený príkaz môže vrátiť:
```
FATAL: Error inserting acpi_cpufreq ([...]/acpi-cpufreq.ko): No such device
```
V tomto prípade nahraďte kernel modul `acpi-cpufreq` s `speedstep-centrino`, `p4-clockmod` alebo `speedstep-ich`.
Modul `speedstep-centrino` je ale zastaraný.
V AUR-e sa náchdaza kernel s modulom speedstep-centrino. Je to balíček **`kernel26-pentium-m`**, ktorý nájdete [tu](https://aur.archlinux.org/packages.php?ID=33104).
#### AMD
```
# modprobe powernow-k8
```
### Načítanie pri boot-e
Aby sa driver načítal automaticky pri štarte pridajte vhodný ovládač do riadku MODULES `/etc/rc.conf`. Príklad:
```
MODULES=( **acpi-cpufreq** vboxdrv fuse fglrx iwl3945 ... )
```
Keď je ovládač načítaný, detailné informácie o CPU môžete zobraziť príkazom:
```
$ cpufreq-info
```
Výstup príkazu by mal byť podobný tomuto:
```
$ cpufreq-info
```
```
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which need to switch frequency at the same time: 0 1
hardware limits: 1000 MHz - 2.00 GHz
available frequency steps: 2.00 GHz, 1.67 GHz, 1.33 GHz, 1000 MHz
available cpufreq governors: ondemand, performance
current policy: frequency should be within 1000 MHz and 2.00 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 2.00 GHz.
analyzing CPU 1:
driver: acpi-cpufreq
CPUs which need to switch frequency at the same time: 0 1
hardware limits: 1000 MHz - 2.00 GHz
available frequency steps: 2.00 GHz, 1.67 GHz, 1.33 GHz, 1000 MHz
available cpufreq governors: ondemand, performance
current policy: frequency should be within 1000 MHz and 2.00 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 2.00 GHz.
```
Pre zobrazenie dostupných *governors* použijeme:
```
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
```
Monitorovanie frekvenice CPU v reálnom čase si zabezpečíme pomocou:
```
watch grep \"cpu MHz\" /proc/cpuinfo
```
### Pridelenie práv v Gnome
Gnome má pekný applet umožňujúci zmenu *governor* počas behu. Pre jeho použitie bez potreby zadávanie hesla pre root jednoducho vytvorte `/var/lib/polkit-1/localauthority/50-local.d/org.gnome.cpufreqselector.pkla`a vložte do neho nasledújúci text:
```
[org.gnome.cpufreqselector]
Identity=unix-user:USER
Action=org.gnome.cpufreqselector
ResultAny=no
ResultInactive=no
ResultActive=yes
```
Kde slovo USER nahradíte vašim používateľským menom.
### Cpufrequtils a Laptop Mode Tools
Ak používate alebo plánujete používať [Laptop Mode Tools](/index.php/Laptop_Mode_Tools "Laptop Mode Tools") možno ho budete chcieť nechať riadiť aj zmeny frekvencie CPU. V tomto prípade vložte `acpi-cpufreq` do riadku MODULES v `/etc/rc.conf`:
```
MODULES=(**acpi-cpufreq**)
```
A potom v `/etc/laptop-mode/conf.d/cpufreq.conf` definujte *governors*, frekvencie a politiky.
Ak používate `laptop-mode-tools` na riadenie `cpufrequtils`, potom nepotrebujete načítavať iné moduly a daemonov alebo nastavovať *governors* a interakcie s ACPI. Prosím prečítajte si [Laptop Mode Tools](/index.php/Laptop_Mode_Tools "Laptop Mode Tools"), aby ste sa dozvedeli ako nainštalova a nakonfigurovať `laptop-mode-tools`.
### Governors
Governors môžu byť myslené ako predkonfigurované schémy pre CPU. Tieto *governors* musia byť načítavané ako moduly kernelu, aby ich programy ako *kpowersave* alebo *gnome-power-manager* mohli využívať.
Dostupné *governors*:
`cpufreq_performance` *(default)*
CPU beží na maximálnej frekvencii. Režím je zabudovaný do kernelu.
`cpufreq_ondemand` *(odporúčané)*
Dynamicky mení frekvencie CPU na základe zaťaženia systému.
`cpufreq_conservative`
Podobné `ondemand`, ale viac konzervatívne.
`cpufreq_powersave`
CPU beží na minimálnej frekvencii.
`cpufreq_userspace`
Manuálne nastavené frekvencie užívateľom.
Načítanie požadovaného režimu sa robí pomocou `modprobe`. Napríklad:
```
# modprobe cpufreq_ondemand
# modprobe cpufreq_userspace
```
Alebo pridajte požadované režimy do riadku MODULES v `/etc/rc.conf` a reštartujte.
```
MODULES=(acpi-cpufreq **cpufreq_ondemand** **cpufreq_powersave**)
```
Manuálne môžete režim zmeniť pomocou príkazu `cpufreq-set` (ako root), ale toto nastavenie nebude uložené po reštarte alebo vypnutí. Napríklad:
```
# cpufreq-set -g ondemand
```
Tento príkaz nastaví režim iba pre prvý procesor. Ak máte viacjadrový alebo viacprocesorový systém, použite prepínač -c. Napr. pre nastavenie režimu pre štvrté jadro (jadrá sa číslujú od nuly):
```
# cpufreq-set -c 3 -g ondemand
```
Pre viac informácii spustite príkaz `cpufreq-set --help` alebo `man cpufreq-set`.
Pre tých, ktorý chcú GUI na zmenu *governors* alebo frekvencií môžu použiť [trayfreq](/index.php/Trayfreq "Trayfreq").
#### Zmena prahu `ondemand` režimu
Na zmenu toho, kedy sa režim `ondemand`prepne na vyšší stupeň môžete zmeniť `/sys/devices/system/cpu/cpufreq/ondemand/up_threshold`. Na zistenie aktuálnej hodnoty nastavenia zadajte nasledujúci príkaz ako root:
```
# cat /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
```
Navrátená hodnota môže byť napr. `80` (default pri kerneli 2.6.31). To znamený, že režim `ondemand` zvýšši frelvenciu keď jadro CPU dosiahne 80% využitia. Môžeme to zmeniť napr. nasledovne:
```
echo "15" > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
```
**Note:** Minimálna hodnota musí byť aspoň o 1 vyššia ako je v down_treshold. Zadanie hodnoty pod túto hodnotu vyhodí chybovú hlášku "bash: echo: write error: Invalid argument"
#### Interakcia s ACPI
Používatelia si môžu nastaviť režimy tak, aby sa automaticky prepínali v závislosti na rozličných ACPI eventoch (napr. pripojenie AC adaptéra alebo zatvorenie krytu laptopu). Eventy sú definované v `/etc/acpi/handler.sh`. Ak je balíček [acpid](https://www.archlinux.org/packages/?name=acpid)nainštalovaný, súbor pravdepodobne existuje a je spustiteľný. Napríklad, ak chcete zmeniť režim z `performance` na `conservative` pri odpojení AC adaptéra a zmeniť naspäť pri jeho zapojení zadáte do súboru:
```
/etc/acpi/handler.sh
```
```
[...]
ac_adapter)
case "$2" in
AC*)
case "$4" in
00000000)
echo "conservative" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo -n $minspeed >$setspeed
#/etc/laptop-mode/laptop-mode start
;;
00000001)
echo "performance" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo -n $maxspeed >$setspeed
#/etc/laptop-mode/laptop-mode stop
;;
esac
;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
[...]
```
### Daemon
`cpufrequtils` obsahuje daemona, kotrý dovoľuje užívateľom nastaviť požadované režimy a min/max frekvencie pre všetky jadrá počas boot-u a bez potreby ďaľších nástrojov ako napr. *kpowersave*.
Pred spustením daemona editujte ako root `/etc/conf.d/cpufreq` a nastavte požadované hodnoty, napr:
```
/etc/conf.d/cpufreq
```
```
#configuration for cpufreq control
# valid governors:
# ondemand, performance, powersave,
# conservative, userspace
governor="ondemand"
# valid suffixes: Hz, kHz (default), MHz, GHz, THz
min_freq="1GHz"
max_freq="2GHz"
```
**Note:** Presné min/max hodnoty môžete zistiť pomocou `cpufreq-info` po načítaní ovládaču (napr. `modprobe acpi-cpufreq`). Tieto hodnoty sú *voliteľné*. Môžete ich vynechať vymazaním alebo zakomentovaním riadkov min/max. Zmeny budú potom automatické.
S požadovanou konfiguráciou následne spustíme daemona ako root pomocu:
```
# /etc/rc.d/cpufreq start
```
Pre automatické spúštanie daemona pri štarte pridajte `cpufreq` do riadku DAEMONS v `/etc/rc.conf`, napríklad:
```
DAEMONS=(syslog-ng networkmanager @alsa @crond @cupsd **@cpufreq**)
```
## Možné problémy
* Niektoré aplikácie ako napr. [ntop](/index.php/Ntop "Ntop") neodpovedajú dobre na automatické zmeny frekvencie. V tomto prípade to môže viesť k segmentation fault.
* Niektoré CPU môžu trpieť nízkym výkonom pri režime `ondemand`. Riešením je vypnutie zmien frekvencie alebo zvýšenie alebo zníženie *up_treshold*.
* Niektoré CPU/BIOS konfigurácie môžu mať problém pri zmenách frekvencie na maximum alebo vo všeobecnosti pri zmenách frekvencie. nanešťastie momentálne existuje iba workaround. Pridajte processor.ignore_ppc=1" do kernel boot a/alebo zmente hodnotu v /sys/module/processor/parameters/ignore_ppc z 0 na 1.