При каких обстоятельствах, если таковые имеются, изменится результат чтения /proc/cpuinfo?

При каких обстоятельствах, если таковые имеются, изменится результат чтения /proc/cpuinfo?

Насколько я понимаю, когда программа открывает и читает любой файл в /proc/, ядро ​​будет генерировать информацию на лету. В конкретном случае cpuinfoбольшая часть этих данных определяется оборудованием и, очевидно, не будет меняться во время работы системы. В чем я не уверен, так это в том,всеэтих данныхне могуизменять во время работы системы.

Можно ли /proc/cpuinfoизменить какие-либо возвращаемые значения без перезапуска системы?

решение1

Да. Во-первых, cpu MHzполе будет меняться очень часто, так как оно показываеттекущийскорость вашего процессора. Например, в моей системе:

$ 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строку моего первого ЦП 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

Связанный контент