Answers:
现在,大多数CPU都具有调整速度的功能,以帮助节省电池/电源使用量。通常称为CPU频率缩放。CPU的实时速度通过以下方式报告:
$ sudo cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
通过以下命令报告绝对(最大)CPU速度:
$ cat /proc/cpuinfo
具体来说这行:
model name : Intel(R) Core(TM) i5 CPU M 560 @ 2.67GHz
显示的行cpu MHz
没有显示您的CPU的最大速度。该值是您当前的速度。在多核系统(例如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。
系统所处的模式称为缩放调节器。类似于汽车上的调速器。您可以使用以下命令查看哪些可用:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
powersave ondemand userspace performance
您还可以查看当前处于活动状态的一个:
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand
注意:我显示的命令仅包括第一个cpu cpu0
。您可以替换*
路径中的a 以查看所有核心,也可以选择性地查看cpu1
,等等。
您可以看到您的州长配置文件可用的最大和最小CPU速度:
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
2667000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
1199000
本文标题为“ 使用cpufreq的Linux中的CPU频率缩放 ”,提供更多详细信息。
此参数与CPU的规格及其当前位于哪个配置文件中有更多关系,而不是与CPU当前的运行方式有关的任何有用信息。对于实际的操作遥测,我将使用scaling_*
内核可调参数。
我将以下脚本放在一起以逐栏显示CPU核心数,这样可以更轻松地看到各种内核可调参数的外观:
#!/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号内核中显示出速度下降。
/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq
显示了最大速度,即使它们的名称暗示了当前速度,这也是您要询问的断开连接,对吗?我的系统也以这种方式显示它们。
/sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
cat /proc/cpuinfo | grep MHz
不再返回当前时钟速度。在内核Bugzilla,他们说这是故意的。请参阅bugzilla.kernel.org/show_bug.cgi?id=197009。它还这里提到:phoronix.com/...
/proc/cpuinfo
报告的内容与不会相同cpuinfo_cur_freq
吗?显然没有!我的问题的核心仍然没有解决。我确实发现了该工具,该工具似乎以某种方式报告“真实频率”,但是我不确定它是否可以正常工作。它为其算法提供了一些资料,但是并没有为差异提供很好的解释。