O governador de desempenho do cpufreq não parece se comportar como anunciado

4

O kernel em uso: 3.2.0-23-generic no Ubuntu 12.04LTS

Por exemplo, eu emito o seguinte comando:

sudo cpufreq-set -c 0 -g performance

Depois, vou para /sys/devices/system/cpu/cpu0/cpufreq e digite o seguinte:

sudo cat cpuinfo_cur_freq

Às vezes, recebo a frequência máxima (3600 MHz) quando faço isso e às vezes recebo a frequência mínima (1600 MHz).

Se eu fizer:

cat scaling_governor

A saída é performance , mostrando que o regulador está de fato configurado para o desempenho.

Então, para tornar ainda mais estranho, se eu fizer isso:

cpufreq-info

Eu recebo:

analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 2 3 8 9 10 11
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.60 GHz - 3.60 GHz
  available frequency steps: 3.60 GHz, 3.60 GHz, 3.47 GHz, 3.33 GHz, 3.20 GHz, 3.07 GHz, 2.93 GHz, 2.80 GHz, 2.67 GHz, 2.53 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 3.60 GHz and 3.60 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 3.60 GHz.
...

Se você olhar para a política atual acima, você notará que ela está me dizendo que a CPU deve estar atrelada a 3.60 GHz. No entanto, cpuinfo_cur_freq parece contar uma história diferente.

    
por Michael Goldshteyn 23.08.2012 / 20:28

2 respostas

6

Infelizmente, em 12.04, o cpufreqd-deamon substitui qualquer configuração que você faz em outros aplicativos, seja em cpufreq-cli ou em Unity-applet . A solução mais fácil que encontrei enquanto navegava pela documentação do Ubuntu era editar /etc/cpufreqd.conf e primeiro adicionar um perfil chamado On Demand da seguinte forma:

[Profile]
name=On Demand
minfreq=10%
maxfreq=100%
policy=ondemand
[/Profile]

Em seguida, você precisa rolar para baixo nos estados #basic e escolher o novo perfil On Demand como o perfil de todos os estados Básicos.

O problema atual é que cpufreqd polls acpi para o estado AC, percebe que o AC está conectado e, em seguida, define o controlador cpu como desempenho, porque é isso que é definido nas regras básicas do arquivo de configuração. Não importa que você tenha selecionado outro administrador pela linha de comando ou pelo miniaplicativo de escala no Unity.

Lembre-se de executar

sudo service cpufreqd restart

depois de editar o arquivo de configuração.

Curiosidade: cpufreqd parece não me sobrepor se eu escolher o governador de desempenho no miniaplicativo de unidade. Mas antes de editar o arquivo de configuração, ele sempre substituía minha escolha por on-demand e voltava ao desempenho. Não faço ideia do porquê.

Eu uso o driver powernow-k8, se isso significa alguma coisa para alguém que leia essa resposta mais tarde.

Nota: A documentação do Ubuntu está severamente faltando sobre cpufreqd (também) e pode muito bem haver uma solução melhor / mais fácil / GUI para o problema.

    
por Gert 24.08.2012 / 17:11
0

Se você está vendo a queda de frequência da CPU temporariamente, pode ser porque a CPU está atingindo um limite térmico e sendo reduzida até a temperatura cair. Apenas um palpite.

    
por Colin Ian King 23.08.2012 / 20:46