繁体   English   中英

C++ Linux获取CPU标称频率

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM