我需要在C ++代码中获得Linux下的CPU标称频率。据我所知,/proc/cpuinfo
包含当前频率。
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
始终可靠作为标称频率(kHz)?
或者有更好的方法从C ++获取此信息吗?
答案 0 :(得分:1)
C ++没有办法访问这个值,它甚至没有假设有这样的值。即使在你的情况下,你只是在看一个CPU,而不是所有的CPU。这意味着你必须做一些依赖于操作系统的东西,你可以在C ++中构建它。
无论如何,您知道提供该号码的任何工具吗?获取它的源代码,看看它是如何做到的!除此之外,我会查看/ proc / cpuinfo并建立" cpu MHz"的平均值。价值观。 /proc
文件系统基本上是/sys
文件系统的前身,但信息应该是相同的。
答案 1 :(得分:1)
没有一种通用的方法来读取标称频率。使用/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
缩放驱动器时,可以从acpi-cpufreq
(标称+ 1 MHz)读取标称频率,但是intel_pstate
将此文件的内容设置为最大Turbo频率。但是,还有其他解决方案。英特尔CPU的标称频率写为CPU型号名称的一部分(当输入EAX = 0x01或从/proc/cpuinfo
时,可使用CPUID指令读取),也可以读取MSR_PLATFORM_INFO (0xCE)
寄存器。