Regulando velocidade e energia gasta pelos processadores. Método moderno. cpupower

Publicado por Alberto Federman Neto. em 16/06/2015

[ Hits: 11.452 ]

Blog: https://ciencialivre.blog/

 


Regulando velocidade e energia gasta pelos processadores. Método moderno. cpupower



Há vários anos, eu publiquei um artigo sobre regulagem da CPU para performance máxima:
Embora essencialmente o artigo seja ainda muito válido, ele foi escrito na época do antigo OpenRC e hoje muitas distros usam systemd. Algumas coisas mudaram nos ajustes, nas regulagens.

Entre as coisas que se pode fazer para aumentar (ou diminuir) a performance da CPU, gastando mais ou menos energia elétrica, é setar o "Governor".

Isso é uma forma de passar instruções ao kernel, para que ele controle a "velocidade" e a energia elétrica gasta.

Os "Governor" existentes, são basicamente cinco:
  1. "Powersave" - modo de menor frequência de CPU, mais econômico.
  2. "Conservative" - modo dinâmico, ajuste automático, mas que mantém a energia elétrica a um gasto pequeno ou moderado.
  3. "Ondemand" - modo dinâmico, que ajuste automaticamente a frequência e a energia gasta pelos processadores, em função das tarefas realizadas. É o modo padrão em várias distros.
  4. "Usespace" - é um modo onde o usuário regula a frequência dos processadores, a um valor fixo: alta, baixa ou moderada frequência.
  5. "Performance" - modo de alta performance, o máximo da frequência admitida pelos núcleos do processador.

Eu sempre uso em desktops: "ondemand" ou "performance" (quando quero alta performance. É o único modo útil em CPUs overclocadas), mas para notebooks, recomendo que usem "powersave" ou "conservative", para não gastarem muita bateria.

É possível regular, setar manualmente, mas há pacotes que facilitam essa regulagem. O que ocorre é que: com o systemd e os novos kerneis, os pacotes antigos para isso, se tornaram obsoletos.

Para AMD se usavam os pacote "powernowd" (ainda existe, mas geralmente não se usa mais). Para Intel e AMD, o pacote mais usado era o "cpufreqd" e seus utilitários ("cpufreutils").

Esse é o pacote que eu citei e usei no meu antigo artigo. Não sei em outras distros, mas pelo menos em Sabayon e Gentoo, ele não existe mais, está deprecado, obsoleto:
Agora se usa o pacote "cpupower" que interage direto com o módulo de kernel e tem muitos recursos.

Inclusive, funciona tanto no Systemd como no antigo OpenRC (SysVinit), além de ter opções que permitem regular o "governor" especificamente para um ou mais núcleos.

Vamos ver como se usa o "cpupower".

Se você usava "cpufreqd" , precisa desinstalar os pacotes antigos. Desinstale os pacotes "cpufreqd" e "cpufrequtils". Em Sabayon Linux, é executando este comando:

# equo rm -v cpufreqd cpufrequtils

Agora instale na sua distro o pacote "cpupower". Em Sabayon:

# equo i -av cpupower

Remova os serviços de boot que se referiam ao antigo pacote. Conforme seu sistema seja OpenRC ou systemd. Em Sabayon com OpenRC;

# rc-update del cpufreqd cpufrequtils

Em distros Debian, creio que o comando é:

sudo update-rc.d cpufreq remove

Com systemd:

# systemctl disable cpufreqd.service
# systemctl disable cpufrequtils.service


Agora adicione os serviços correspondentes ao pacote cpupower (que acabou de instalar):

Em Sabayons com OpenRC:

# rc-update add cpupower
# /etc/init.d/cpupower start


Em distros com systemd:

# systemctl enable cpupower.service
# systemctl start cpupower.service


Agora pode selecionar o "Governor" que quiser usar:

# cpupower frequency-set -g "nome do governor"

Nos meus sistemas, regulei para "ondemand".

Vejam o "governor ondemand" funcionando no meu Sabayon, instalado em um Phenon de 8 núcleos, de frequência padrão, não overclocado:

cpupower frequency-info
Analisando o CPU 0:
  driver: acpi-cpufreq
  CPUs que rodam na mesma frequência de hardware: 0
  CPUs que precisam ter suas frequências coordenadas por software: 0
  maior latência de transição: 4.0 us.
  limites do hardware: 1.40 GHz - 3.10 GHz
  níveis de frequência disponíveis: 3.10 GHz, 2.80 GHz, 2.30 GHz, 1.90 GHz, 1.40 GHz
  reguladores do cpufreq disponíveis: conservative, ondemand, powersave, userspace, performance
  política de frequência atual deve estar entre 1.40 GHz e 3.10 GHz.
                  O regulador "ondemand" deve decidir qual velocidade usar
                  dentro desse limite.
  frequência atual do CPU é 1.40 GHz.
status do cpufreq: 3.10 GHz:73,35%, 2.80 GHz:0,51%, 2.30 GHz:1,06%, 1.90 GHz:3,56%, 1.40 GHz:21,53% (88002)


Note que somente um dos núcleos (dos oito) está funcionando bastante e está em frequência, alta, portanto, bem controlado o sistema pelo governor "ondemand":

sudo cpupower monitor -l
Monitor "Mperf" (3 states) - Might overflow after 922000000 s
C0      [T] -> Processor Core not idle
Cx      [T] -> Processor Core in an idle state
Freq    [T] -> Average Frequency (including boost) in MHz
Monitor "Idle_Stats" (3 states) - Might overflow after 4294967295 s
POLL    [T] -> CPUIDLE CORE POLL IDLE
C1      [T] -> <null>
C2      [T] -> ACPI IOPORT 0x815


sudo cpupower monitor
    |Mperf               || Idle_Stats
CPU | C0   | Cx   | Freq || POLL | C1   | C2
   0|  7,24| 92,76|  1547||  0,00|  0,70| 92,41
   1|  2,56| 97,44|  1668||  0,00|  0,58| 97,09
   2|  8,67| 91,33|  1571||  0,00|  4,94| 86,74
   3|  1,45| 98,55|  1643||  0,00|  0,09| 98,64
   4|  9,00| 91,00|  1584||  0,00|  4,99| 86,36
   5|  4,08| 95,92|  1682||  0,00|  0,10| 96,06
   6|  2,50| 97,50|  3709||  0,00|  6,11| 91,56
   7| 99,63|  0,37|  3717||  0,00|  0,06|  0,00

Há várias outras opções no pacote e nos comandos do "cpupower". Detalhes, veja:
Outras dicas deste autor

Krusader 2.0.0 Phoenix Egg - Gerenciador de arquivos completo para o KDE4 ou superior

Alternativas ao Dropbox e outros serviços de armazenamento em nuvem

Método fácil (adequado inclusive para iniciantes) de backup e cópia

Atualizando Cairo-Dock no Sabayon - Compilação direta

Diminuindo tamanho de imagens (truques simples)

Leitura recomendada

Instalando Driver Nvidia no Slackware 13.37

Configurando DVD via porta USB no Ubuntu

Som na inicialização do Ubuntu 9.04 no HP Dv7 1285dx

Modem ADSL speedtouch 330 USB no Slackware 11

Problema em instalação com HD SCSI

  

Comentários
[1] Comentário enviado por niquelnausea em 18/06/2015 - 16:27h

ha alguns anos estava atrás de informações sobre como economizar eletricidade, já que o pc ficava 24h ligados compartilhando torrents, me lembro de ter compilado o kernel com a opção [i]ondemand[/i] e (praticamente) ter resolvido o problema. hoje uso um notebook para esta tarefa, dando uma olhada nas configurações do kernel, vi que o mesmo já é compilado com a opção [i]ondemand[/i] habilitada, mas ao verificar as possíveis opções para meu processador, me espantei ao ver que só existem duas:

$ cpupower frequency-info
analisando o CPU 0:
driver: intel_pstate
CPUs que rodam na mesma frequência de hardware: 0
CPUs que precisam ter suas frequências coordenadas por software: 0
maior latência de transição: 0.97 ms.
limites do hardware: 800 MHz - 2.20 GHz
reguladores do cpufreq disponíveis: performance, powersave
política de frequência atual deve estar entre 800 MHz e 2.20 GHz.
O regulador "powersave" deve decidir qual velocidade usar
dentro desse limite.
frequência atual do CPU é 987 MHz.
boost state support:
Supported: no
Active: no
25500 MHz max turbo 4 active cores
25500 MHz max turbo 3 active cores
25500 MHz max turbo 2 active cores
25500 MHz max turbo 1 active cores


obrigado pela dica, e vamos aos testes!!!

[2] Comentário enviado por albfneto em 14/06/2017 - 18:49h

ATUALIZAÇÃO DESTA DICA

4 de Julho de 2018.

Nos Sabayon Linux novos, 17 e 18, o pacote "cpupower" já é o default do sistema, não há mais necessidade de instalá-lo.

Mas você observará que, se você trocar o "governor" na Tela Gráfica no no comando do "cpupower", após reboot , ele vai voltar ao default, "powersave", por causa nas configurações salvas que o systemd acessa.

Eu gosto de usar "ondemand" ou "performance".

Para corrigir isso, edite o arquivo /etc/sysconfig/cpupower e nas linhas default:

# See 'cpupower help' and cpupower(1) for more info
CPUPOWER_START_OPTS="frequency-set --governor powersave"
CPUPOWER_STOP_OPTS=""

troque "powersave" por "ondemand"

Também, se você quiser observar se os governors estão funcionando legal, em cada núcleo do processador, use um comando completo:

$ cpupower -c all frequency-info

Por exemplo, eu tenho 8 núcleos e eles aparecem, um a um.


¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts