[英]C++ Linux get CPU nominal frequency
我需要在 C++ 代码中获得 Linux 下的 CPU 标称频率。 据我所知, /proc/cpuinfo
包含当前频率。
是/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
作为以kHz为单位的标称频率总是可靠的?
或者有没有更好的方法从 C++ 获取这些信息?
C++ 没有任何方法来访问这个值,它甚至不假设有这样一个值。 即使在您的情况下,您也只是查看其中一个 CPU,而不是所有 CPU。 这意味着你将不得不做一些依赖于操作系统的事情,你可以用 C++ 构建。
无论如何,您知道提供该号码的任何工具吗? 获取它的源代码,看看它是如何做到的! 除此之外,我会查看 /proc/cpuinfo 并在那里构建“cpu MHz”值的平均值。 /proc
文件系统基本上是/sys
文件系统的前身,但信息应该是相同的。
没有一种通用的方法来读取标称频率。 使用acpi-cpufreq
缩放驱动程序时,您可以从/sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq
(nominal + 1 MHz) 读取 Intel 处理器的标称频率,但是intel_pstate
将此文件的内容设置为最大涡轮频率. 尽管如此,还是有替代的解决方案。 Intel CPU 将标称频率写为 CPU 型号名称的一部分(当输入 EAX = 0x01 或从/proc/cpuinfo
读取时使用 CPUID 指令读取),或者您可以读取MSR_PLATFORM_INFO (0xCE)
寄存器。
编辑:AMD 处理器在/sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq
提供标称频率,没有额外的 1 MHz
EDIT2:某些处理器可能有/sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_nominal_freq
文件,例如 POWER9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.