
Насколько я понимаю, когда программа открывает и читает любой файл в /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