cpufreq-info difere de / proc / cpuinfo?

6

Eu tenho um servidor e quero garantir que ele esteja sempre funcionando na velocidade máxima, nunca no modo de economia de energia. Eu tentei algumas estratégias (além de reiniciar e alterar a configuração no BIOS, o que eu teria que fazer para algumas centenas de servidores), mas estou obtendo resultados estranhos de cpufreq-info . Por exemplo:

root@host:~# cpufreq-info -c 0
cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to [email protected], please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 2.20 GHz
  available frequency steps: 2.20 GHz, 2.20 GHz, 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 2.00 GHz and 2.20 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz (asserted by call to hardware).
  cpufreq stats: 2.20 GHz:6.50%, 2.20 GHz:0.24%, 2.10 GHz:0.34%, 2.00 GHz:0.05%, 1.90 GHz:0.04%, 1.80 GHz:0.03%, 1.70 GHz:0.03%, 1.60 GHz:0.03%, 1.50 GHz:0.03%, 1.40 GHz:0.03%, 1.30 GHz:0.03%, 1.20 GHz:92.66%  (8080636)

Observe que a velocidade mínima mostra "2,00 GHz" e o regulador está configurado para "desempenho", mas a freqüência atual da CPU é 1,20 GHz . No entanto, se eu apenas olhar em / proc / cpuinfo, o valor lá é consistentemente ~ 2.2 GHz:

root@host:~# egrep 'MHz|Xeon' /proc/cpuinfo ; cpufreq-info -c 0
model name  : Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
cpu MHz     : 2200.000
model name  : Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
cpu MHz     : 2201.000

Qual destes está correto? Qual eu acredito? Além das alterações do BIOS, existe alguma maneira de garantir o modo de desempenho máximo? Por que vale a pena, este é o Ubuntu 12.04, com este kernel:

Linux host 3.2.0-76-generic #111-Ubuntu SMP Tue Jan 13 22:16:09 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
    
por Evan 08.07.2015 / 22:58

2 respostas

6

Estou quase convencido de que seu BIOS está limitando suas CPUs a 1,20 GHz. No kernel existem dois valores:

  1. scaling_cur_freq, que é a frequência que o driver cpufreq acha que solicitou. / proc / cpuinfo contém este valor. Chama a função cpufreq_quick_get ().

  2. cpuinfo_cur_freq que é a frequência que é realmente programada na CPU. cpufreq-info está usando este valor como indicado por "declarado por chamada ao hardware". (Eventualmente ele chama __cpufreq_get ().) Ele retornaria ao scaling_cur_freq se o cpuinfo_cur_freq não estivesse disponível.

+1 sobre os comentários de Matt sobre atualização em massa do BIOS. Por exemplo, os servidores de classe HP Proliant DL permitem que você altere o regulamento de energia on-line. Talvez o seu hardware tenha funcionalidades semelhantes.

    
por 09.07.2015 / 01:57
5

As alterações do BIOS são a melhor maneira de garantir o desempenho máximo, mas é inevitável o escalonamento de frequência controlado por hardware (limitação térmica).

Aqui está uma postagem da Intel sobre configuração da frequência da CPU . Até certo ponto, a frequência da CPU pode ser controlada no nível do usuário e do sistema operacional. Aqui estão algumas informações adicionais do Arch Linux sobre o escalonamento de frequência que você pode achar valioso.

No lado do BIOS, uma atualização em massa do BIOS de um grupo de servidores poderia ser executada usando uma interface de gerenciamento independente, como uma NIC dedicada à Intelligent Platform Management Interface (IPMI) ou um sistema KVM programável.

    
por 08.07.2015 / 23:06