什麼情況下(如果有的話)讀取/proc/cpuinfo的結果會改變?

什麼情況下(如果有的話)讀取/proc/cpuinfo的結果會改變?

到目前為止我的理解是,當程式開啟並讀取 下的任何檔案時/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

相關內容