Почему cpuinfo_cur_freq и/proc/cpuinfo сообщают о различных числах?

Имел ту же ошибку, ища, который, я нашел ответом, в котором было сказано, что мы должны перезагрузить в однопользовательском режиме и выполнить fsck на рассматриваемом диске. Это решило наш вопрос.

13
21.08.2013, 00:51
2 ответа

Большая часть ЦП теперь включает способность скорректировать их скорость для помощи в том, чтобы экономить на батарее/энергопотреблении. Это обычно называло частотное масштабирование ЦП. О скорости в реальном времени ЦП сообщает это:

$ sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq

Об абсолютной (макс.) скорости ЦП сообщает это:

$ cat /proc/cpuinfo

Конкретно эта строка:

model name  : Intel(R) Core(TM) i5 CPU    M 560  @ 2.67GHz

Строка, которая показывает cpu MHz не показывает максимальную скорость Вашего ЦП. Это значение является Вашей текущей скоростью. В многоядерной системе, такой как i7 или i5 Вы видите это с этой командой:

$ cat /proc/cpuinfo |grep MHz
cpu MHz     : 1199.000
cpu MHz     : 1199.000
cpu MHz     : 1199.000
cpu MHz     : 2667.000

Можно однако видеть абсолютную (макс.) скорость с этой командой:

$ lscpu 
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                4
Thread(s) per core:    2
Core(s) per socket:    2
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 37
Stepping:              5
CPU MHz:               2667.000
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3

Примечание: количество ядер, которые это имеет, NUMAS node0 CPU(s) 4, т.е. 0,1,2, и 3.

Масштабирование ЦП и governoring?

Режим, в котором находится Ваша система, называют масштабирующимся регулятором. Подобный регулятору на автомобиле. Вы видите, которые доступны с этой командой:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
powersave ondemand userspace performance 

Можно также видеть, какой в настоящее время активен:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand

Примечание: Команды, которые я показываю только, включают 1-й CPU, cpu0. Можно или занять место в a * в пути для наблюдения всех ядер или можно выборочно видеть cpu1, и т.д.

Вы видите максимальные и минимальные скорости ЦП, доступные для профиля Вашего губернатора:

$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
2667000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq 
1199000

Больше деталей доступно в этой статье, названной: частотное масштабирование ЦП в Linux с cpufreq.

Таким образом что относительно cpuinfo_cur_freq?

Этот параметр больше имеет отношение к спецификации ЦП и которые представляют, это в настоящее время находится в, а не что-либо полезное относительно того, как ЦП в настоящее время работает. Для фактической операционной телеметрии я использовал бы scaling_* ядро tunables.

Пример

Я соединил следующий сценарий для показа Ядер процессора по столбцам, таким образом, будет легче видеть то, на что было похоже различное Ядро tunables:

#!/bin/bash

nthCore=$(lscpu|grep node0|cut -d"-" -f2)

for i in /sys/devices/system/cpu/cpu0/cpufreq/{cpuinfo,scaling}_*; do
  pname=$(basename $i)
  [[ "$pname" == *available* ]] || [[ "$pname" == *transition* ]] || \
  [[ "$pname" == *driver* ]]    || [[ "$pname" == *setspeed* ]] && continue
  echo "$pname: "
  for j in `seq 0 $nthCore`;do
    kparam=$(echo $i | sed "s/cpu0/cpu$j/")
    sudo cat $kparam
  done
done | paste - - - - - | column -t

При выполнении его, Вы получаете следующий вывод:

$ ./cpuinfo.bash
cpuinfo_cur_freq:  2667000   2667000   2667000   2667000
cpuinfo_max_freq:  2667000   2667000   2667000   2667000
cpuinfo_min_freq:  1199000   1199000   1199000   1199000
scaling_cur_freq:  2667000   2266000   1333000   2667000
scaling_governor:  ondemand  ondemand  ondemand  ondemand
scaling_max_freq:  2667000   2667000   2667000   2667000
scaling_min_freq:  1199000   1199000   1199000   1199000

Вы видите что scaling_cur_freq настраиваемый показывает замедление в базовом № 1 и 2.

14
27.01.2020, 19:53
  • 1
    , Если бы это было верно, не был бы /proc/cpuinfo сообщите о том же как cpuinfo_cur_freq? Это ясно не делает! Основа моего вопроса все еще остается нерешенной. Я действительно раскрывал этот инструмент, который, кажется, так или иначе сообщает "об истинной частоте", но я не уверен, что это работает правильно. Это обеспечивает некоторые источники для своего алгоритма, но действительно не дает большое объяснение несоответствия. –  wulftone 23.08.2013, 20:54
  • 2
    Строки такой как /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq действительно ли показ является максимальными скоростями, даже при том, что они - имя, подразумевал бы текущую скорость, это - разъединение, которое Вы спрашиваете о, правильно? Моя система показывает им этот путь также. –  slm♦ 23.08.2013, 21:46
  • 3
    Когда Вам включили частотное масштабирование, необходимо использовать это для получения фактических частот CPU: /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq –  slm♦ 23.08.2013, 22:14
  • 4
    Для любого, кто пытается запустить скрипт..., необходимо будет изменить команду вставки, чтобы иметь тире N+1, где N является количеством центральных процессоров (логические ядра), Вы просматриваете. Необходимо будет также зафиксировать первую строку. Самое простое быстрое исправление должно установить его на N-1 (количество ядер, кроме они запускают с 0); метод в сценарии не работает вообще для меня на EL6 и не работал бы правильно в системе mutliple-ЦП. –  Dan Pritts 10.03.2016, 05:30
  • 5
    Отметьте: Начиная с Ядра 4.13, cat /proc/cpuinfo | grep MHz больше не возвращает текущую тактовую частоту. В Ядре Bugzilla они говорят, что это является намеренным. См. bugzilla.kernel.org/show_bug.cgi?id=197009. Это также упоминается здесь: phoronix.com / … –  Marc.2377 11.10.2017, 06:14

Хм... как это возможно, что моя текущая скорость процессора выше заявленной максимальной?

$ lscpu | grep MHz
CPU MHz:                         3886.649
CPU max MHz:                     2900,0000
CPU min MHz:                     1400,0000

Это вызвано повышением частоты?

Model name:                      AMD Ryzen 7 4800H with Radeon Graphics
Stepping:                        1
Frequency boost:                 enabled
0
17.03.2021, 07:02

Теги

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