C ++ Linux获得CPU标称频率

时间:2015-12-18 08:31:32

标签: c++ linux cpu-speed

我需要在C ++代码中获得Linux下的CPU标称频率。据我所知,/proc/cpuinfo包含当前频率。

/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

始终可靠作为标称频率(kHz)?

或者有更好的方法从C ++获取此信息吗?

2 个答案:

答案 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)寄存器。