вывод lscpu отличается при косвенном вызове?

Я использую lscpu | grep 'MHz' получить мою тактовую частоту. Я получаю различные результаты на основе метода, который я называю этой командой.

Метод 1: ввод его в терминале
CPU MHz: 1200.000

Метод 2: Инкапсуляция его в сценарии, названном test.sh
Код сценария:

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

Затем в терминале

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

Вывод:
CPU MHz: 1200.000

Пока все хорошо. Но теперь, метод 3: удар 'выполненный или просматривает текущий файл' в Geany на test.sh. Вывод:
CPU MHz: 2200.000

Метод 4: запись сценария Python, названного test.py, который называет test.sh.
Код сценария Python:

#! /usr/bin/python
import subprocess

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

if __name__ == '__main__':
    test()

Затем в терминале:
$ python test.py

Вывод:
CPU MHz: 2200.000

Я попробовал и Python и python3. Оба дают тот же (ошибочный) результат.

Почему делает lscpu дайте другой вывод, когда он будет выполнен косвенно? И как я могу зафиксировать это/обходить это? Что-то не так находится в моем коде? Если это имеет значение я запускаю Ubuntu 13.10.

Спасибо :-).

1
задан 8 April 2014 в 17:49

2 ответа

Это - совпадение, это - Ваша система, изменяющая текущую частоту CPU.

Сверяются с этой командой в терминале:

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

Вы будете видеть (при ожидании немного), который переключает частота CPU системы.

можно также получить текущую частоту CPU с этой командой:

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

И Ваша максимальная/минимальная частота CPU с теми:

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

Изменение поведение? губернатор CPU решает, какая частота должна использоваться. Посмотрите этот , документация из ядра Linux для решения с регулятором CPU подходит лучше всего для Вас.

  • Получают регулятор: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  • Изменение регулятор: echo "powersave" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3
ответ дан 10 November 2019 в 19:25

Большинство современных центральных процессоров может скорректировать свою тактовую частоту. Регулятор по умолчанию на Linux "по требованию", который поддерживает тактовую частоту на низком уровне для экономии электроэнергии, когда неактивный и ускоряет его, чтобы сделать работу при необходимости.

См. https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt

0
ответ дан 10 November 2019 в 19:25

Другие вопросы по тегам:

Похожие вопросы: