どのような状況で、/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

関連情報