CPU Throttling/Dynamic frequency scaling: Configurando Cool'n'Quiet/SpeedStep no Linux (parte 1)

Esse artigo é sobre a instalação do Cool'n'Quiet no Linux. Para ver a versão Windows desse tutorial, clique aqui.


O que é CPU Throttling, e quais suas vantagens?
Os processadores AMD mais modernos possuem uma tecnologia chamada Cool'n'Quiet (Frio e Silencioso, em tradução tosca livre), que monitora o quanto o usuário está exigindo do processador. Assim, quando o processador não está sendo muito utilizado, o sistema diminui o clock (velocidade) do processador e a voltagem, diminuindo o consumo de energia elétrica (ou de bateria, em notebooks) e ajudando a resfriar o processador. As placas mães mais modernas permitem o uso de coolers (ventiladores) inteligentes, que diminuem a rotação quando o processador está frio, gerando assim menos ruído. Quando o processador é exigido novamente, o clock e a voltagem são aumentados novamente. Segundo a AMD a medição é feita 30 vezes por segundo, o que na prática faz com que você não sinta diminuição na performance (mas seu sistema vai sentir os benefícios de funcionar mais frio). Recentemente habilitei o Cool'n'Quiet em um Semprom 3200. Antes da instalação a temperatura média do processador era de 65º C. Agora, a temperatura média fica na casa dos 45º C!!! Uma queda de 20º C ou aproximadamente 30%!!! E sem perda de performance. Definitivamente vale a pena.

Obs: Para que o Cool'n'Quiet possa ser habilitado, tanto o processador quanto a placa mãe necessitam suportar a tecnologia. Atualmente, a maioria dos processadores e placas já suportam. Também é necessário que seu sistema tenha suporte ao SysFS, que exibe um sistema de arquivos virtual em /sys, semelhante ao /proc. Atualmente a maioria das distribuições Linux (ou todas?) fazem uso desse sistema de arquivos. Você pode confirmar se a sua instalação suporta o sysfs com o seguinte comando:
debian:~# mount | grep -i sysfs
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
Se você obter um resultado semelhante a esse, significa que seu sistema utiliza o SysFS

Obs2: A Intel possui uma tecnologia semelhante, chamada SpeedStep. Os procedimentos para utilização dessa tecnologia são basicamente os mesmos. No entanto, como eu tenho acesso apenas a processadores AMD irei me ater a esse fabricante.

Obs3: O procedimento descrito aqui foi testado no Debian Linux. Outras distribuições Linux também suportam a tecnologia, porém o procedimento de instalação dos softwares pode ser um pouco diferente.

Verificando se o seu processador tem suporte ao Cool'n'Quiet:
Segundo esta página da Wikipedia , esta é a lista de processadores que suportam Cool'n'quiet

  • Athlon 64 and X2 - Todos os modelos
  • Athlon 64 FX - FX-53 (apenas Socket 939) e superiores
  • Sempron - Socket 754: 3000+ e superiores; Socket AM2: 3200+ e superiores
  • Opteron - E-stepping e superiores, marcados como Optimized Power Management
  • Phenom - Todas as versões suportam Cool'n'Quiet 2.0
  • Phenom II - Suporta Cool'n'Quiet 3.0

Verificando se a sua placa mãe tem suporte ao Cool'n'Quiet:
A maneira mais simples de verificar se sua placa mãe tem suporte ao Cool'n'Quiet é procurando no manual (normalmente na parte de Features, que costuma ficar no início do manual), no site do fabricante, ou diretamente na BIOS (normalmente na parte de configurações do processador ou configurações de energia). Coloquei abaixo as fotos de duas BIOS que mostram a opção ativada.


Métodos de controle da frequência:
No Linux, o driver dos processadores AMD já faz parte do kernel padrão à partir da versão 2.6.19 (diferentemente do Windows, onde é necessário instalar o driver do processador). Assim, basta apenas instalar o pacote desejado. Existem basicamente 3 pacotes para essa tarefa:

  • powernowd: Inicialmente a tecnologia Cool'n'Quiet era conhecida como PowerNow!. O powernow é um daemon, que gerencia o clock do processador automaticamente conforme a demanda.
  • cpufreqd: outro daemon que visa gerenciar o clock dependendo da demanda de uso do processador.
  • cpufrequtils: é uma interface que configura qual a o comportamento do processador

É possível ainda configurar diretamente o kernel (em tempo real), sem a necessidade de instalar nenhum dos pacotes acima. Vamos ver as duas maneiras: utilizando o pacote cpufrequtils e também diretamente.

Instalando o cpufrequtils:
Nada mais simples: No Debian (e derivados) basta digitar
aptitude install cpufrequtils
e o pacote será instalado, bem como todas as suas dependências.

Módulos necessários:
Carregue os seguintes módulos com o comando modprobe <nome_do_modulo>
powernow-k7 / powernow-k8 (dependendo da arquitetura do seu processador. Processadores 64 bits utilizam o módulo powernow-k8, mesmo rodando em modo 32 bits. Processadores anteriores utilizam o módulo powernow-k7)
cpufreq_userspace
cpufreq_conservative
cpufreq_ondemand
cpufreq_stats
cpufreq_powersave

Cada módulo carrega um governor. Um governor é um algoritmo de gerência de clock. Cada governor gerencia o clock de maneiras diferentes:
  • userspace: permite que você selecione o valor de clock desejado. O valor deve estar dentro da lista de valores suportados por seu processador. Veremos mais a frente como ver a lista de frequências suportadas
  • conservative: configura o clock no menor valor possível e aumenta o valor gradativamente (em degraus), conforme a demanda.
  • ondemand: configura o clock no menor valor possível e aumenta o valor diretamente para o máximo conforme a demanda. Ou seja, varia apenas entre o valor mínimo e o máximo.
  • powersave: mantém o clock sempre no valor mínimo. Util para poupar bateria em notebooks.
  • stats: gera estatísticas de funcionamento: quantas vezes o sistema alternou o clock do processador e quanto tempo o processador ficou em cada velocidade.
  • performance: não possui um módulo, mas mantém o clock sempre no valor máximo. É o comportamento padrão do sistema (processador sempre no máximo, sem gerência de clock/energia)
Se você pretende utilizar apenas um governor, não é necessário carregar todos. Basta carregar o módulo correspondente ao governor desejado.

Vou parar por aqui para que o artigo não fique muito grande. Na próxima parte, veremos efetivamente como alterar o clock do processador. Até lá!!! Dúvidas, erros críticas e sugestões: basta comentar.

Nenhum comentário: