# CPU frequency scaling (Português)

## Sumário

cpufrequtils[broken link: replaced by cpupower] trata-se de um conjunto de utilitários projectados para assistir ao escalonamento da frequência do processador, tecnologia usada principalmente nos portáteis para permitir ao sistema operativo reduzir ou aumentar a frequência do processador consoante a necessidade actual, tornando o consumo energético mais eficiente.

Quando usado em conjunto com pm-utils, os utilizadores de portáteis dispõem de uma suite de gestão de energia completa.

## Instalação

O pacote cpufrequtils[broken link: replaced by cpupower] está disponível no repositório. Official repositories (Português)

## Configuração

A configuração do escalonamento do CPU é um processo de 3 passos:

1. Carregar o controlador apropriado para o CPU
2. Carregar o regulador de frequência desejado
3. Configurar e carregar o daemon de escalonamento de frequência (opcional)

### Controlador da Frequência do CPU

Para que o escalonamento de frequência funcione, o sistema operativo precisa de saber os limites do(s) teu(s) CPU(s). Para isso, temos de carregar um módulo do kernel que permita ler e gerir as espeficicações do(s) teu(s) CPU(s).

Os portáteis e desktops mais modernos podem simplesmente usar o driver `acpi-cpufreq`, apesar de existirem outras opções: `p4-clockmod`, `powernow-k6`, `powernow-k7`, `powernow-k8` e `speedstep-centrino`.

Para carregar o módulo do kernel manualmente:

    # modprobe acpi-cpufreq

Para carregar automaticamente no arranque do sistema, adiciona o o driver respectivo ao array `MODULES` no ficheiro `/etc/rc.conf`. Por exemplo:

    MODULES=( acpi-cpufreq vboxdrv fuse fglrx iwl3945 ... )

Uma vez carregado do driver apropriado, podes ver informação detalhado do(s) teu(s) CPU(s) executando:

    $ cpufreq-info

Exemplo de output de `cpufreq-info` de um Intel Core 2 Duo T7200:

    cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
    Report errors and bugs to linux@brodo.de, please.
    analyzing CPU 0:
     driver: acpi-cpufreq
     CPUs which need to switch frequency at the same time: 0 1
     hardware limits: 996 MHz - 1.99 GHz
     available frequency steps: 1.99 GHz, 1.66 GHz, 1.33 GHz, 996 MHz
     available cpufreq governors: ondemand, performance
     current policy: frequency should be within 996 MHz and 1.99 GHz.
                     The governor "ondemand" may decide which speed to use
                     within this range.
     current CPU frequency is 996 MHz.
    analyzing CPU 1:
     driver: acpi-cpufreq
     CPUs which need to switch frequency at the same time: 0 1
     hardware limits: 996 MHz - 1.99 GHz
     available frequency steps: 1.99 GHz, 1.66 GHz, 1.33 GHz, 996 MHz
     available cpufreq governors: ondemand, performance
     current policy: frequency should be within 996 MHz and 1.99 GHz.
                     The governor "ondemand" may decide which speed to use
                     within this range.
     current CPU frequency is 996 MHz.

### Reguladores de Escalonamento

Os reguladores podem ser vistos como definições pré-configuradas de energia para o CPU. Estes reguladores têm de ser carregados como módulos do kernel para serem vistos por programas como o kpoewrsave ou o gnome-power-manager. Podes carregar tantos quantos quiseres, mas não pode haver mais do que um activos em simultâneo.

Reguladores disponíveis:

performance (omissão)
  O regulador performance está embutido no kernel e corre o(s) CPU(s) à frequẽncia máxima.
cpufreq_ondemand (recomendado)
  Aumenta/diminui, de forma dinâmica, a velocidade do(s) CPU(s) baseado na necessidade do sistema.
cpufreq_conservative
  Semelhante a 'ondemand', mas mais conservador (as mudanças de frequência não são tão repentinas, mas mais baseadas em médias de utilização).
cpufreq_powersave
  Corre o(s) CPU(s) à velocidade mais baixa.
cpufreq_userspace
  Velocidades definidas pelo utilizador.

Adiciona os reguladores desejados ao array MODULES no ficheiro `/etc/rc.conf`:

    MODULES=(acpi-cpufreq cpufreq_ondemand cpufreq_powersave vboxdrv fuse fglrx iwl3945 ... )

Em alternativa, podes definir manualmente o regulador executando (como root) o comando `cpufreq-set`, mas o estado não será salvo quando o sistema for reiniciado. Por exemplo:

    # cpufreq-set -g ondemand

Executa `cpufreq-set --help` ou `man cpufreq-set` para mais informação.

### Modo daemon

O `cpufrequtils` também instala um daemon que te permite definir o regulador desejado para velocidades mínimas/máximas no arranque sem a necessidade de ferramentas como kpowersave. Esta solução e perfeita para quem corre ambientes de trabalho leves, como Openbox.

Antes de iniciar o daemon, edita o ficheiro `/etc/conf.d/cpufreq` como root, seleccionando o regulador e definindo a velocidade mínima/máxima para o(s) teu(s) CPU(s), por exemplo:

    #configuration for cpufreq control
    # valid governors:
    #  ondemand, performance, powersave,
    #  conservative, userspace
    governor="ondemand"

    # valid suffixes: Hz, kHz (default), MHz, GHz, THz
    min_freq="800MHz"
    max_freq="2GHz"

Nota: Os valores min/max exactos para o(s) teu(s) CPU(s) podem ser verificados executando `cpufreq-info` depois de carregado o módulo referido no início (e.g. `modprobe acpi-cpufreq`). Contudo, estes valores são opcionais. Podes omiti-los completamente eliminando ou comentando as linhas respectivas, que tudo funcionará automaticamente, uma vez que o kernel consegue detectar os valores necessários.

Com o ficheiro de configuração tratado, podes agora iniciar o daemon com o seguinte comando:

    # /etc/rc.d/cpufreq start

Para iniciar o daemon automaticamente no arranque, adiciona `cpufreq` ao array `DAEMONS` no ficheiro `/etc/rc.conf`, por exemplo:

    DAEMONS=(syslog-ng hal cpufreq network netfs @alsa @crond @cupsd @fam @ntpd @sshd)

## Outros recursos

Pm-utils - Plataforma de Hibernação/Suspensão providenciada pela comunidade OpenSUSE

Categories:

- Power management (Português)
- CPU (Português)
- HOWTOs (Português)

Hidden category:

- Pages with broken package links