Cpufreq modificando arbitrariamente frequência máxima do processador [Resolvido]

Iniciado por rihoem, 05 de Abril de 2012, 23:41

tópico anterior - próximo tópico

rihoem

Olá a todos. Este é meu primeiro tópico aqui neste fórum. Geralmente eu tento encontrar soluções para o meu problema pesquisando no google, nos fóruns em inglês mesmo, e obtenho sucesso. Porém neste caso, estou quase desistindo.

De uns meses para cá, tenho notado uma piora do desempenho do meu notebook (Acer Aspire 3100). A princípio pensei que eram programas pesados que eu vinha usando (como o navegador, que usualmente consome bastante memória e recursos). Mas num dia qualquer, eu rodei o comando 'cpufreq-indo' e constatei a seguinte informação:

driver: powernow-k8
 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: 107 us.
 limites do hardware: 800 MHz - 2.20 GHz
 níveis de frequência disponíveis: 2.20 GHz, 2.00 GHz, 1.80 GHz, 1.60 GHz, 800 MHz
 reguladores do cpufreq disponíveis: conservative, ondemand, userspace, powersave, performance
 política de frequência atual deve estar entre 800 MHz e 1.76 GHz.
                 O regulador "ondemand" deve decidir qual velocidade usar
                 dentro desse limite.
 frequência atual do CPU é 1.60 GHz.

Editei deixando a informação relevante. Destaque para a 'política de frequência atual': o sistema está deixando a frequência máxima em 1.76GHz. Isso nunca havia acontecido, e esta frequência sequer é uma possível de ser usada. Já tomei várias medidas para tentar resolver o problema, mas o sistema insiste em deixar a frequência do processador travada entre estas duas.

Se eu uso o comando 'cpufreq-set --min 800MHz --max 2.20GHz' para forçar a frequência máxima, o sistema obedece, mas depois de uns minutos volta a ficar preso em 1.76. Qualquer outro comando do cpufreq-set é sumariamente ignorado pelo sistema: simplesmente nada muda.

Pesquisando em fóruns, algums usuários relataram melhorar ao colocar a opção de boot "processor.ignore_ppc=1" para resolver problemas de BIOS. Eu coloquei esta opção mas não houve resultado.

Em alguns lugares encontrei que era um problema no serviço 'cpudyn', que controla a frequência. Porém, no meu sistema ele estava desinstalado. Mesmo instalando-o e ativando-o, e desativando o cpufreqd, o problema continua.

Em algumas situações, foi reportado este problema para quem fazia overclock do processador. Não é meu caso, pois o processador não foi modificado.

Já tentei impor ao cpufreq o regulador 'performance', 'conservative' e mesmo o 'userspace', tentando forçar frequências mínimas, mas depois de um tempo tudo volta ao problema original.

Num fórum do Fedora, havia a sugestão de instalar o powernowd e remover o cpufreqd. Mas o pacote powernowd não aparece para ser instalado no xubuntu 11.10.

O mais frustrante é que este problema começou com alguma atualização. Não me recordo de problemas no desempenho após a instalação. Só com o tempo e com updates é que notei o problema. Meu processador é um "AMD Turion64 Mobile MK-38". A versão do kernel é 3.0.0-18-generic, a mais atual.

Se alguém souber de um caso onde um usuário tinha este problema e conseguiu resolver, por favor deixe aqui o link. Eu simplesmente não sei mais ao que recorrer. Meu notebook está quase inutilizável com o processador preso a frequências tão baixas....

Obrigado.


irtigor

O modo ondemand é o recomendado para notebooks e não é a causa da piora no desempenho. Com ele há troca da velocidade de clock, entre as disponíveis, com base na carga do sistema, ou seja: maior economia de energia sem subutilizar o hardware.
Mas você pode colocar no modo performance, se insistir, basta alterar o "perfil de uso" ou algo assim, no "gerenciador de consumo de energia" que está usando.

rihoem

irtigor
Eu já tentei todos os modos possíveis do cpufreq-set, até mesmo forçando manualmente a frequência do processador em um valor superior a 1.80GHz. Porém, ou o comando simplesmente é ignorado, ou depois de um tempo o sistema volta a limitar a frequência a 1.76.

Algo curioso é que não é só a frequência que muda arbitrariamente. O cpufreq fica mudando inclusive o regulador. Às vezes está no 'ondemand', em outras está em 'performance', e outras no 'userspace', sem que eu faça nada. Parece que ele ficou louco!

Pesquisando mais em alguns fóruns, eu verifiquei que o comando "echo "95" > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold" funciona por mais tempo. Depois deste comando, o sistema fica uns 20 minutos funcionando corretamente. Mas depois, o problema com a frequência retorna....

zekkerj

Você costuma usar seu notebook no carregador, ou usa sempre na bateria? Pq faz parte das configurações do sistema assumir o modo "ondemand" sempre que o notebook passa pra bateria, e o modo "performance" quando vai pro carregador.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

irtigor

Por isso eu disse para alterar no seu gerenciador de consumo de energia (ou equivalente). Ele geralmente é configurado pra mudar de acordo com o estado da máquina: performance se está conectado a tomada e ondemand fora (entre outras possíveis combinações, como frequência baixa -que pode ser obtida no modo userspace ou powersave- se a bateria está acabando).

Se não ficou claro, a frequência no modo ondemand vai chegar a máxima suportada se for necessário.

rihoem

Coloquei a bateria e o notebook aguentou mais tempo antes de apresentar o problema. Porém, depois disso, mesmo mudando o regulador entre 'ondemand', 'powersave' ou 'performance', a frequencia ainda ficava travada abaixo de 1.76GHz. Eu mexi no gerenciador de energia do XFCE, deixando as opções marcadas para privilegiar o desempenho mesmo quando está na bateria, mas mesmo assim não houve efeito algum.

Estou começando a desconfiar que seja um problema de hardware... Mas não consigo imaginar o que seria...

Enquanto isso, vou baixando as atualizações na esperança de resolver alguma coisa ¬¬

irtigor

Vou colocar de outra forma: você verificou com a máquina em estresse?
No modo ondemand você só vai ver a frequência no máximo, se a cpu precisar trabalhar a todo vapor. Ex:

cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 2.40 GHz
  available frequency steps: 2.40 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz, 1.47 GHz, 1.33 GHz, 1.20 GHz
  available cpufreq governors: powersave, ondemand, performance
  current policy: frequency should be within 1.20 GHz and 2.40 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz.
analyzing CPU 1:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 1
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 2.40 GHz
  available frequency steps: 2.40 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz, 1.47 GHz, 1.33 GHz, 1.20 GHz
  available cpufreq governors: powersave, ondemand, performance
  current policy: frequency should be within 1.20 GHz and 2.40 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz.
analyzing CPU 2:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 2
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 2.40 GHz
  available frequency steps: 2.40 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz, 1.47 GHz, 1.33 GHz, 1.20 GHz
  available cpufreq governors: powersave, ondemand, performance
  current policy: frequency should be within 1.20 GHz and 2.40 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 2.40 GHz.
analyzing CPU 3:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 3
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 2.40 GHz
  available frequency steps: 2.40 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz, 1.47 GHz, 1.33 GHz, 1.20 GHz
  available cpufreq governors: powersave, ondemand, performance
  current policy: frequency should be within 1.20 GHz and 2.40 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz.


Só a CPU2 está a 2.40 GHz.

rihoem

Citação de: irtigor online 06 de Abril de 2012, 20:28
Vou colocar de outra forma: você verificou com a máquina em estresse?
No modo ondemand você só vai ver a frequência no máximo, se a cpu precisar trabalhar a todo vapor. Ex:

cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
 driver: acpi-cpufreq
 CPUs which run at the same hardware frequency: 0 1 2 3
 CPUs which need to have their frequency coordinated by software: 0
 maximum transition latency: 10.0 us.
 hardware limits: 1.20 GHz - 2.40 GHz
 available frequency steps: 2.40 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz, 1.47 GHz, 1.33 GHz, 1.20 GHz
 available cpufreq governors: powersave, ondemand, performance
 current policy: frequency should be within 1.20 GHz and 2.40 GHz.
                 The governor "ondemand" may decide which speed to use
                 within this range.
 current CPU frequency is 1.20 GHz.
analyzing CPU 1:
 driver: acpi-cpufreq
 CPUs which run at the same hardware frequency: 0 1 2 3
 CPUs which need to have their frequency coordinated by software: 1
 maximum transition latency: 10.0 us.
 hardware limits: 1.20 GHz - 2.40 GHz
 available frequency steps: 2.40 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz, 1.47 GHz, 1.33 GHz, 1.20 GHz
 available cpufreq governors: powersave, ondemand, performance
 current policy: frequency should be within 1.20 GHz and 2.40 GHz.
                 The governor "ondemand" may decide which speed to use
                 within this range.
 current CPU frequency is 1.20 GHz.
analyzing CPU 2:
 driver: acpi-cpufreq
 CPUs which run at the same hardware frequency: 0 1 2 3
 CPUs which need to have their frequency coordinated by software: 2
 maximum transition latency: 10.0 us.
 hardware limits: 1.20 GHz - 2.40 GHz
 available frequency steps: 2.40 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz, 1.47 GHz, 1.33 GHz, 1.20 GHz
 available cpufreq governors: powersave, ondemand, performance
 current policy: frequency should be within 1.20 GHz and 2.40 GHz.
                 The governor "ondemand" may decide which speed to use
                 within this range.
 current CPU frequency is 2.40 GHz.
analyzing CPU 3:
 driver: acpi-cpufreq
 CPUs which run at the same hardware frequency: 0 1 2 3
 CPUs which need to have their frequency coordinated by software: 3
 maximum transition latency: 10.0 us.
 hardware limits: 1.20 GHz - 2.40 GHz
 available frequency steps: 2.40 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz, 1.47 GHz, 1.33 GHz, 1.20 GHz
 available cpufreq governors: powersave, ondemand, performance
 current policy: frequency should be within 1.20 GHz and 2.40 GHz.
                 The governor "ondemand" may decide which speed to use
                 within this range.
 current CPU frequency is 1.20 GHz.


Só a CPU2 está a 2.40 GHz.

Gente, eu vou esclarecer uma coisa que talvez eu expliquei mal no começo. O meu processador deveria estar entre 800MHz e 2.20GHz, porém o cpufreq cria, sem um motivo aparente, o limite de 1.76GHz (ou 1.32GHz, às vezes). Assim, mesmo quando tenho coisas pesadas rodando, o processador fica preso nessas frequências baixas.

irtigor, eu fiz testes com o notebook na tomada e sem bateria, só na bateria e na tomada com a bateria carregando e cheia. Em todas as situações, o processador invariavelmente passou para esse modo 'travado'. A única diferença é que, na tomada e com bateria, ele demorou mais tempo para apresentar o problema.

E o meu notebook quase sempre está sob estresse. Como ele não é lá muito potente, qualquer site com flash aberto ou vídeo em alta definição já consome bastante recursos do processador. Antes desse problema eu conseguia confortavelmente manter várias coisas abertas ao mesmo tempo, pois 2.20GHz davam conta do recado, e o cpufreq só abaixava a frequência quando ficava ocioso. Mas agora, ele fica travando o processador a frequências baixas especialmente quando eu mais preciso....

Ontem saiu uma atualização para o kernel e eu a instalei. Por enquanto o cpufreq está se comportando bem, variando a frequência entre os limites corretos. Vou aguardar mais para verificar se foi mesmo corrigido na atualização.

Atualização: Eu acabo de notar que o problema do processador só aparece quando abro o google-chrome. Geralmente uso o Opera como browser padrão, mas alguns sites que não funcionam nele eu abro no chrome. Fiz um teste para confirmar: mesmo assistindo vídeos a 480p no youtube e editando imagens no gimp ao mesmo tempo (que para o meu note é bem estressante), o cpufreq se manteve coerente. Ao abrir o chrome, imediatamente o cpufreq começou a limitar a frequência do processador.

Vou esperar uns dias antes de colocar este tópico como resolvido para confirmar que não é uma coincidência, mas a princípio creio que o navegador do google é a origem de todo o transtorno ¬¬

Edit- Foi só falar.... agora mesmo o processador já começou a apresentar os problemas. Acho que qualquer tarefa intensa causa o problema. Nem a atualização trouxe uma correção. Acho que o jeito é ficar na torcida mesmo...

irtigor

Continuo achando que o problema não é no cpufreq, ele só vai agir se receber sinais. Dá uma olhada no acpi, rode o sistema com ele desabilitado.

rihoem

Gente, eu acho que o problema é bem mais básico. E tão ridículo que passou completamente despercebido.
Eu rodei o comando 'sensors' e acusou isto:

acpitz-virtual-0
Adapter: Virtual device
temp1:        +70.0°C  (crit = +100.0°C)

k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp:   +68.0°C 
Core1 Temp:   +68.0°C


Deixei o cpufreq em 'powersave', rodando na frequencia mínima, até a temperatura ficar abaixo de 50ºC. Depois, coloquei em 'ondemand' novamente, e até agora o processador está se comportando bem. Vou deixar algo pesado rodando e esperar a temperatura subir mais e monitorar o cpufreq. Por enquanto está é minha aposta. Alguém sabe se 70ºC é uma temperatura demasiado alta? O programa 'hddtemp' mostra uma temperatura de 55ºC para o HD. Eu nunca me preocupei com temperatura pois sempre mantinha as saídas das ventoinhas limpas, e nunca deixei meu notebook ligado em dias muito quentes...

irtigor, vou testar também o acpi para ver o que acontece. Tenho medo de desativar o acpi por completo, então vou colocar a opção de boot "acpi=noirq", segundo uma dica do GDH (http://www.hardware.com.br/dicas/opcoes-boot.html), e ver o que acontece.

Obrigado pela ajuda.

zekkerj

A equação é simples: mais frequência => mais temperatura. Quando vc forçou os núcleos a trabalharem em frequências mais altas, forçou também a temperatura deles a aumentar.  Experimente deixar o micro no modo powersave, e observe como a temperatura vai baixar bruscamente.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

rihoem

Muito bem, acho que descobri realmente a causa do problema. Depois de desativar o acpi, o meu note nem ligava mais :P, então mesmo que fosse essa a causa, estou impossibilitado de usar esta solução.

Eu limitei a frequência do processador para 2GHz (evitando que ele esquente demais, mesmo com atividades intensas), e o notebook está se comportando bem há horas. Mesmo com atividades intensas, a temperatura não está subindo muito e, segundo minha teoria, o cpufreq não limita a frequência para evitar superaquecimento.

zekkerj, no momento em que eu verifiquei a temperatura, o cpufreq estava com o controlador 'ondemand', ou seja, variando de 800MHz a 2.20GHz. Estava tudo no 'normal'. Não sei por que, mas mesmo cuidando da limpeza do meu note, ele não consegue dissipar o calor adequadamente quando o processador está no máximo.

Vou tentar abri-lo e limpar melhor, ou mandar para uma loja especializada.

Agradeço a todos pela atenção e ajuda. Vou encerrar o tópico. Mesmo que o calor não seja a causa, estou dependente de uma atualização do sistema para arrumar o bug no sistema, então vou ter que esperar de qualquer jeito.