Por que modificar 'scaling_setspeed' de uma cpu altera as frequências em tempo real de ambos os cpus?

1

Meu notebook Thinkpad T400 com Ubuntu 16.04 possui dois núcleos de cpu cpu0 e cpu1 .

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
797963
797963
$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_setspeed
800000
800000

Em seguida, edito /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed para alterar seu conteúdo para 1600000 e, em seguida,

  1. Por que a frequência em tempo real da cpu1 também muda, sem alterar seu arquivo scaling_setspeed ?

    $ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_setspeed
    1600000
    800000
    $ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
    1595928
    1595926
    
  2. Por que o comando a seguir mostra um resultado diferente do acima:

    $ watch grep \"cpu MHz\" /proc/cpuinfo
    
    Every 2.0s: grep "cpu MHz" /proc/cpuinfo                                                                                                                   Thu Jan 25 17:31:01 2018
    
    cpu MHz         : 1600.000
    cpu MHz         : 800.000
    

Obrigado.

Parece que as alterações só devem afetar o núcleo atual, não ambos:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/affected_cpus
0
$ cat /sys/devices/system/cpu/cpu1/cpufreq/affected_cpus
1
    
por Tim 25.01.2018 / 23:04

1 resposta

1

É provavelmente uma limitação de hardware. Muitas CPUs exigem que todos os núcleos, ou às vezes pares de núcleos no mesmo dado, sejam executados na mesma frequência. O arquivo affected_cpus (no mesmo diretório) deve informar quais núcleos são forçados a executar na mesma freqüência.

Veja link para alguma documentação.

    
por 25.01.2018 / 23:32