![什么情况下(如果有的话)读取/proc/cpuinfo的结果会改变?](https://linux22.com/image/76329/%E4%BB%80%E4%B9%88%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%88%E5%A6%82%E6%9E%9C%E6%9C%89%E7%9A%84%E8%AF%9D%EF%BC%89%E8%AF%BB%E5%8F%96%2Fproc%2Fcpuinfo%E7%9A%84%E7%BB%93%E6%9E%9C%E4%BC%9A%E6%94%B9%E5%8F%98%EF%BC%9F.png)
到目前为止我的理解是,当程序打开并读取 下的任何文件时/proc/
,内核将即时生成信息。在特定情况下,cpuinfo
大多数数据是由硬件决定的,并且显然在系统运行时不会改变。我不确定的是全部该数据的不能在系统运行时改变。
/proc/cpuinfo
是否可以在无需重新启动系统的情况下更改返回的任何值?
答案1
是的。一方面,该cpu MHz
字段会经常变化,因为它显示了当前的你的CPU的速度。例如,在我的系统上:
$ for i in {1..10}; do grep -m 1 MHz /proc/cpuinfo ; done
cpu MHz : 1596.000
cpu MHz : 1596.000
cpu MHz : 1596.000
cpu MHz : 1596.000
cpu MHz : 2394.000
cpu MHz : 2394.000
cpu MHz : 1596.000
cpu MHz : 1596.000
cpu MHz : 2394.000
cpu MHz : 2394.000
上面的命令将打印cpu MHz
我的第一个 CPU 的行 10 次。正如您在上面看到的,这导致了 2 个单独的值,并且这甚至没有增加任何等待时间。您可以预期该字段会经常发生变化。我认为任何其他值都不会改变,在我的测试中也没有改变,但我不能发誓这一点。
答案2
它取决于架构 - 相关代码在这里(对于 ARM):
http://lxr.free-electrons.com/source/arch/arm/kernel/setup.c#L1074
注意:对于 ARM,似乎所有字段在计算后都应保持不变 - 没有cpu MHz
(@terdon 引用了他关于其架构的答案)。
例如,以下是 Raspberry Pi 上的输出:
pi@raspberrypi ~ $ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
processor : 1
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
processor : 2
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
processor : 3
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 38.40
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5
Hardware : BCM2709
Revision : a01041
Serial : 000000002489fe23