在Linux上查看CPU速度的正确方法是什么?


20

我找到了两个命令来输出有关CPU的信息:cat /proc/cpuinfolscpu/proc/cpuinfo显示我的CPU速度为2.1 Ghz,而lspcu说它为3167 Mhz。哪一个是正确的?

这是我cat /proc/cpuinfo关于处理器速度的确切输出:

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

这是从lscpu

CPU MHz:               3225.234

(由于某种原因,lscpu每次输出都不同,在3100和3300 MHz之间变化)


3
/proc/cpuinfo还应该有一行显示cpu MHZ: ...当前速度。之后的2.1 @是基本速度(无涡轮增压)。
don_crissti

什么是涡轮增压?这是否意味着我的速度实际上在3.2 GHz左右?
罗汉

2
这是英特尔在需要时“命中注定”的方式。我猜您当时的实际速度确实在3.2 GHz左右,您也可以尝试使用cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq(作为root)使用cpu0 。
don_crissti

2
Turbo Boost是一项技术,可根据您使用的内核数量来更改处理器的频率。如果使用很少的内核,则可以增加频率以提高性能并保持低温。您可以检查Turbo Boost频率表以检查其频率如何增加。
Jaime

Answers:


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'Quietfor AMD),则从另一个终端运行一次或多次以下命令可以看到上述命令的速度变化。

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

(此命令用于bc计算pi10000个位置。)


我必须.在您的第一个命令中删除,以使其正常工作:watch -n1 "cat /proc/cpuinfo | grep \"^[c]pu MHz\""
n1k31t4

1
这是一种很不错的方法,但是我要注意不要每0.1秒运行任何命令,这本身会影响CPU速度报告。1秒就足够了。
Lizardx

@Lizardx通常,我同意,但是在这种情况下,CPU速度可以以1秒的间隔增加和减少,这导致缺乏可见的速度变化。由于现代处理器的速度如此之快,因此我最初SpeedStep以1秒为间隔无法正常工作。至少,.5应该如果一个人不想去尽可能快地使用.1 second(虽然我还是错过了不少观看的速度变化以这个速度。
蒂莫西·马丁

1
尝试在计时器设置为少于1秒的情况下运行top,可以明显看到cpu的使用情况。我的猜测是,您实际上可能看到的是系统生成您的cpu速度信息,也就是说,cpu速度输出的生成导致了cpu的运动。我发现不到一秒钟的时间都会直接导致您正在观看的CPU速度。例如,-d5处的最高值是cpu的1%。在-d2时约为5%。您可能会发现自己实际上是在自欺欺人,以为CPU正在做您正在做的事情,呵呵。输出到外壳也很昂贵。
Lizardx

可以尝试watch -n0.1,可能会起作用。失败的是,while true; do cat /proc/cpuinfo | grep MHz; sleep 0.1; clear; done它比观看时闪烁得更多。
史蒂文·卢

7

对于基于Intel i3,i5和i7的cpus,有一个名为的专用工具i7z可以显示所有cpu内核的当前速度。

从手册页(描述):

i7z运行基于ncurses的i7z程序,没有任何选项。i7z将打印出Intel(包括Nehalems,Sandy Bridge和Ivy Bridge)基于i3,i5和i7的酷睿处理器的C状态和温度。

对于基于ubuntu的发行版,您可以通过发出以下命令来安装它:

sudo apt-get install i7z

然后运行它(工具需要使用sudo运行):

sudo i7z

4
如果您有Intel CPU,这是最好的解决方案。处理cpuinfo会给您错误的时钟速度。仅需注意,您忘记将破折号放在“ apt-get”中。
fgblomqvist

好吧...它可以与我的Xeon处理器一起工作,只有输出出现乱码,可能是因为我有两个CPU(我有一个双Xeon主板)。
Alexis Wilke

4

英特尔酷睿i7-4600U处理器支持Turbo Boost技术。它的基本频率为2.10GHz,最大Turbo频率为3.30GHz。就是说

  • 如果禁用Turbo Boost(在BIOS设置菜单中),则CPU始终在2.10GHz下工作。
  • 启用Turbo Boost且仅其中一个内核正在工作时,CPU的最高工作频率为3.30GHz。
  • 如果启用了Turbo Boost,并且所有内核都在工作,则CPU将在2.10GHz下工作。

获取当前频率

要确定Turbo Boost是否已激活以及当前频率是多少,可以使用cpupower frequency-info。例如,对于启用了Turbo Boost的旧Intel Core i5-660,您将获得以下内容。

$ 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)。您可以在英特尔网站上找到这些频率的技术信息。

禁用TurboBoost时的频率

注意区别,当你运行采用Turbo Boost相同的命令禁止:在boost state support一节中,值SupportedActiveno。在此,CPU始终处于标称/最小值(1.20Ghz)。

$ 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

您可以使用BIOS或某些Linux选项/命令来禁用Turbo Boost 。该内核支持可启用/使用禁用/sys/devices/system/cpu/cpufreq/boost文件。


Haypo的博客条目包含有关Intel p状态驱动程序,C状态,Turbo Boost和获取频率信息的命令的更多信息。
Jaime

该链接现在已断开...
Mikhail T.

1
haypo博客条目的链接已损坏。您可以在Victor Stinner的注释中找到副本:第1 部分第2部分
Jaime

4

CPU频率保留在内核中,但是它们可能有点“偏离”。您可以使用以下命令查看它们:

$ 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

这种方法似乎适用于运行Raspbian的树莓派
Jon

3

要获取有关您的CPU的信息,请键入以下命令:

dmidecode -t 4

2
笨拙的 现在我在这里看到4个不同的数字;-)
vonbrand '16

同样,“当前速度”似乎具有误导性,因为当机器闲置时,当前总是将当前速度报告为一个较大的数字(3.7GHz)。
ragerdl

@vonbrand一个有手表的人知道现在几点了。拥有两块手表的人永远无法确定。
库萨兰达

0

取决于您使用信息的目的;cat / proc / cpuinfo`的输出行是“已广告”速度,小册子中的速度等。如果将服务器A与服务器B进行比较,则可能就足够了。如果您正在监视系统上的工作负载,则要看的是对问题的评论和@ gad3r的答案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.