Как правильно посмотреть скорость вашего процессора в Linux?

20

Я нашел две команды для вывода информации о моем процессоре: cat /proc/cpuinfoи lscpu. /proc/cpuinfoпоказывает, что скорость моего процессора составляет 2,1 ГГц, а lspcuговорит, что это 3167 МГц. Какой из них правильный?

Это мой точный вывод cat /proc/cpuinfoо моей скорости процессора:

model name  : Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz

И это из lscpu:

CPU MHz:               3225.234

(По какой-то причине lscpuкаждый раз по-разному выводится в диапазоне от 3100 до 3300 МГц)

Рохан
источник
3
Вы /proc/cpuinfoтакже должны иметь строку, которая говорит, cpu MHZ: ...какая текущая скорость. 2.1 после @базовой скорости (без турбонаддува).
don_crissti
Что такое турбо буст? И значит ли это, что моя скорость на самом деле составляет около 3,2 ГГц?
Рохан
2
Это способ Intel «ударить по газу», когда это необходимо. Я полагаю, что ваша фактическая скорость в тот момент составляла около 3,2 ГГц, вы также можете попробовать, например, для cpu0 с cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq(как root).
don_crissti
2
Turbo Boost - это технология, которая изменяет частоту процессора в зависимости от количества используемых ядер. Если вы используете несколько ядер, частота увеличивается, чтобы повысить производительность и поддерживать низкую температуру. Вы можете проверить таблицы частот Turbo Boost, чтобы проверить, как он увеличивается.
Хайме

Ответы:

35

Чтобы увидеть текущую скорость каждого ядра, я делаю это:

watch -n.1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""

Замечания:

Если ваша watchкоманда не работает с интервалами меньше одной секунды, измените интервал следующим образом:

watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""

Это отображает cpu speedкаждого ядра в режиме реального времени.

Запустив следующую команду один или несколько раз с другого терминала, можно увидеть изменение скорости с помощью указанной выше watchкоманды, предполагая, что SpeedStepона включена ( Cool'n'Quietдля AMD).

echo "scale=10000; 4*a(1)" | bc -l &

(Эта команда использует bcдля расчета piдо 10000 мест.)

Тимоти Мартин
источник
Мне пришлось удалить .в вашей первой команде, чтобы она заработала:watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""
n1k31t4
1
это отличный способ сделать это, но я бы предостерег от запуска любой команды каждые 0,1 секунды, которая сама по себе повлияет на отчет о скорости процессора. 1 секунда - это много
Lizardx
@Lizardx Обычно я согласен, но в этом случае скорость процессора может увеличиваться и уменьшаться быстрее, чем 1-секундный интервал, что приводит к отсутствию видимых изменений скорости. Поскольку современные процессоры работают очень быстро, я изначально думал, что они SpeedStepне работают, когда в качестве интервала используется 1 секунда. Как минимум, .5следует использовать, если кто-то не хочет идти так быстро, как .1 second(хотя я до сих пор не видел много изменений скорости с такой скоростью.
Тимоти Мартин
1
Попробуйте запустить top с таймерами, установленными менее чем на 1 секунду, вы можете увидеть использование процессора наглядно. Я предполагаю, что то, что вы на самом деле видите, - это система, генерирующая информацию о скорости вашего процессора, то есть генерирование выходной скорости процессора вызывает движение процессора. Я обнаружил, что менее секунды начинает напрямую вызывать скорости процессора, которые вы смотрите. Например, вершина в -d5 составляет 1% центрального процессора. При -d2 это около 5%. Вы можете обнаружить, что вы на самом деле дурачите себя, думая, что процессор делает то, что вы делаете, хе-хе. Вывод в оболочку тоже дорогой.
Lizardx
Может попробовать watch -n0.1, может сработать. В противном случае while true; do cat /proc/cpuinfo | grep MHz; sleep 0.1; clear; done, это мерцает больше, чем смотреть, хотя.
Стивен Лу
7

Для процессоров Intel i3, i5 и i7 существует специальный инструмент, i7zкоторый отображает текущую скорость для всех ядер процессора.

Со страницы руководства (описание):

i7z запускает программу i7z, основанную на ncurses, без каких-либо опций. i7z распечатает C-состояния и температуру для процессоров Core на базе i3, i5 и i7 от Intel (включая Nehalems, Sandy Bridge и Ivy Bridge).

Для дистрибутивов на основе Ubuntu вы можете установить его, выполнив следующую команду:

sudo apt-get install i7z

затем просто запустите его (инструмент должен быть запущен с помощью sudo):

sudo i7z
Михал Пжибылович
источник
4
Это лучшее решение, если у вас есть процессор Intel. Catping cpuinfo дает вам неправильные тактовые частоты. Просто заметка, вы забыли поставить черту в «apt-get».
fgblomqvist
Ну ... он работает с моим процессором Xeon, но искажается только вывод, может быть, потому что у меня два процессора (у меня двойная материнская плата Xeon).
Алексис Вилке
4

Процессор Intel Core i7-4600U поддерживает технологию Turbo Boost . Он имеет базовую частоту 2,10 ГГц и максимальную турбо-частоту 3,30 ГГц. Что означает, что,

  • Если вы отключите Turbo Boost (в меню настройки BIOS), процессор будет работать на частоте 2,10 ГГц.
  • Когда Turbo Boost включен и работает только одно из ядер, процессор будет работать с частотой максимум 3,30 ГГц.
  • Если Turbo Boost включен и все ядра работают, процессор будет работать на частоте 2,10 ГГц.

Получение текущей частоты

Чтобы определить, активирован ли Turbo Boost и какая текущая частота, вы можете использовать cpupower frequency-info. Например, для старого Intel Core i5-660 с включенным Turbo Boost вы получите следующее.

$ cpupower frequency-info
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 - 3.47 GHz
  available frequency steps: 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 1.20 GHz and 3.47 GHz.
              The governor "ondemand" may decide which speed to use
              within this range.
  current CPU frequency is 1.87 GHz.
  cpufreq stats: 3.47 GHz:82,67%, 3.33 GHz:0,00%, 2.53 GHz:0,00%, 1.87 GHz:0,06%, 1.20 GHz:17,28%  (3)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores

Обратите внимание, что в информации указаны аппаратные пределы ( 1.20 GHz - 3.47 GHz), возможные частоты ( 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz) и текущая частота ( 1.87 GHz). Вы можете найти техническую информацию об этих частотах на веб-сайте Intel .

Частота, когда TurboBoost отключен

Обратите внимание на разницу при запуске той же команды с Turbo Boost отключена: В boost state supportразделе значения для Supportedи Activeявляются no. Здесь процессор будет постоянно иметь номинальное / минимальное значение (1,20 ГГц).

$ cpupower frequency-info
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 - 3.47 GHz
  available frequency steps: 3.47 GHz, 3.33 GHz, 2.53 GHz, 1.87 GHz, 1.20 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 1.20 GHz and 3.47 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 1.20 GHz.
  cpufreq stats: 3.47 GHz:40,86%, 3.33 GHz:0,01%, 2.53 GHz:0,06%, 1.87 GHz:0,22%, 1.20 GHz:58,85%  (493)
  boost state support:
    Supported: no
    Active: no
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores

Вы можете отключить Turbo Boost, используя BIOS или некоторые опции / команды Linux . Поддержка ядра может быть включена / отключена с помощью /sys/devices/system/cpu/cpufreq/boostфайла.

Jaime
источник
У Haypo есть запись в блоге с дополнительной информацией о драйвере Intel p-state, C-состояниях, Turbo Boost и командах для получения информации о частоте.
Хайме
эта ссылка теперь не работает ...
Михаил Т.
1
Ссылка на запись в блоге haypo не работает. Вы можете найти копию в заметках Виктора Стиннера: часть 1 и часть 2 .
Хайме
4

Частоты процессора сохраняются в ядре, но могут быть немного «выключены». Вы можете увидеть их, используя:

$ cd /sys/devices/system/cpu
$ paste <(cat cpu*/cpufreq/affected_cpus) <(cat cpu*/cpufreq/scaling_cur_freq) | column -s $'\t' -t
0  833914
1  800021
2  800086
3  800029
4  800036
5  800460
6  800118
7  800141

Если вам не нужно знать, что CPU # использует более короткий метод:

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
1396354
800058
800050
800024
800005
800017
800001
1392006
WinEunuuchs2Unix
источник
Этот метод, кажется, работает на Raspbian Raspberry Pi
Джон
3

Чтобы получить информацию о вашем процессоре, введите следующую команду:

dmidecode -t 4
GAD3R
источник
2
Cuspy. Теперь я вижу 4 разных номера здесь ;-)
vonbrand
Кроме того, «текущая скорость», по-видимому, вводит в заблуждение, поскольку текущая скорость в настоящее время всегда указывается как большое число (3,7 ГГц), когда машина находится в режиме ожидания.
ragerdl
@ vonbrand Человек с одними часами знает, который час. Человек с двумя часами никогда не может быть уверен в себе.
Кусалананда
0

Зависит от того, для чего вы используете информацию; строка вывода из cat / proc / cpuinfo` - это «объявленная» скорость, скорость в брошюре и т. д. Если вы сравниваете сервер A с сервером B, этого может быть достаточно. Если вы следите за рабочими нагрузками в системе, комментарии на ваш вопрос и ответ @ gad3r будут на что посмотреть.

Марк Стюарт
источник