lscpu output difere quando chamado indiretamente?

1

Eu uso lscpu | grep 'MHz' para obter minha velocidade de clock. Estou obtendo resultados diferentes com base no método que estou chamando este comando.

Método 1: digitando-o no terminal em CPU MHz: 1200.000

Método 2: Encapsulando-o em um script chamado test.sh
Código do script:

#! /bin/bash
cpu=$(lscpu | grep 'MHz')
echo $cpu

Então, no terminaL

$ chmod +x test.sh
$ ./test.sh

Saída: CPU MHz: 1200.000

Até aí tudo bem. Mas agora, o método 3: hiting the 'run ou view current file' no Geany em test.sh. Saída: CPU MHz: 2200.000

Método 4: escrevendo um script python chamado test.py que chama test.sh.
Código de script Python:

#! /usr/bin/python
import subprocess

def test():
    subprocess.call("./test.sh")

if __name__ == '__main__':
    test()

Em seguida, no terminal: $ python test.py

Saída: CPU MHz: 2200.000

Eu tentei tanto o python quanto o python3. Ambos dão o mesmo resultado (errôneo).

Por que o lscpu fornece uma saída diferente quando é executado indiretamente? E como posso consertar isso / contornar isso? Tem algo errado no meu código? Por que vale a pena, estou executando o Ubuntu 13.10.

Obrigado :-).

    
por Gx1sptDTDa 08.04.2014 / 15:28

2 respostas

3

Isso é uma coincidência, é o seu sistema alterando a frequência da CPU atual.

Verifique com este comando em um terminal:

watch -n 0 "lscpu | grep 'MHz'"

Você verá (ao aguardar um pouco) que a freqüência da CPU do sistema está mudando.

Você também pode obter sua frequência de CPU atual com este comando:

cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq

E o seu máximo / mínimo de frequência de CPU com esses:

cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

Altere o comportamento? O cpu governor decide qual frequência deve ser usada. Veja esta documentação do kernel do linux para decidir com o cpu governor se encaixa melhor para você. / p>

  • Obtenha o governor: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  • Alterar o governador: echo "powersave" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
por chaos 08.04.2014 / 15:49
0

A maioria dos processadores modernos pode ajustar sua frequência de clock. O regulador padrão no linux é "on demand", que mantém a velocidade do clock baixa para economizar energia quando inativa, e acelera para fazer o trabalho quando necessário.

Veja link

    
por Sylvain Pineau 08.04.2014 / 15:50