Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;Linux获取CPU标称频率 我需要在C++代码下获得Linux的CPU标称频率。据我所知,/proc/cpuinfo包含当前频率_C++_Linux_Cpu Speed - Fatal编程技术网

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

C++;Linux获取CPU标称频率 我需要在C++代码下获得Linux的CPU标称频率。据我所知,/proc/cpuinfo包含当前频率,c++,linux,cpu-speed,C++,Linux,Cpu Speed,Is/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo\u max\u freq 以kHz为单位的标称频率是否始终可靠 P>或者,是否有更好的方法从C++获得这些信息? < P> C++没有任何访问这个值的方法,甚至不假设有这样的值。即使在您的情况下,您也只是查看其中一个CPU,而不是所有CPU。这意味着你必须做一些与OS相关的东西,你可以在C++中构建。 不管怎样,你知道有什么工具能提供这个号码吗?获取它的源代码,看看它是如何做到的!除此之外,我将查看/

Is
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo\u max\u freq

以kHz为单位的标称频率是否始终可靠


<> P>或者,是否有更好的方法从C++获得这些信息?

< P> C++没有任何访问这个值的方法,甚至不假设有这样的值。即使在您的情况下,您也只是查看其中一个CPU,而不是所有CPU。这意味着你必须做一些与OS相关的东西,你可以在C++中构建。
不管怎样,你知道有什么工具能提供这个号码吗?获取它的源代码,看看它是如何做到的!除此之外,我将查看/proc/cpuinfo并在那里构建“cpu MHz”值的平均值。
/proc
文件系统基本上是
/sys
文件系统的前身,但是信息应该是相同的。

没有一种通用的方法来读取标称频率。使用
acpi-cpufreq
缩放驱动程序时,可以从
/sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq
读取英特尔处理器的标称频率,但是
Intel_pstate
会将此文件的内容设置为最大turbo频率。不过,还有其他解决办法。英特尔CPU的标称频率作为CPU型号名称的一部分写入(当输入EAX=0x01或从
/proc/cpuinfo
读取时,可使用CPUID指令读取),或者您可以读取
MSR\U平台信息(0xCE)
寄存器

编辑:AMD处理器以
/sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq
的形式提供标称频率,无需额外的1 MHz


EDIT2:某些处理器可能有
/sys/devices/system/cpu/cpu*/cpufreq/cpuinfo\u nominal\u freq
文件,例如POWER9

仅供参考,我的计算机上不存在该文件。原因可能是CPU不支持任何动态频率调整,因此最大值没有意义。s/cpufrequ/cpufreq/gI也没有OP提到的文件。您实际上想要实现什么?我询问的原因是,如果您告诉我们,它可能会给您一个更好的答案,而不是询问某些特定的文件,这些文件现在或将来可能存在,也可能不存在。@MatsPetersson我想得到一个CPU标称(最大)频率的值。我知道,这取决于操作系统,我必须在Linux下得到这个值。不幸的是,/proc/cpuinfo包含当前频率,而不是最大频率。afaik,这是OS构建的特性,如果它“知道”那个CPU的话。程序实际上必须找出模型,并将其与数据表交叉引用。例如,如果处理器太新、太旧或太异国情调,所有的赌注都没有了。没有赌注,我写的东西对英特尔处理器非常适用。我对AMD不是很熟悉,但我现在正在和一个AMD合作,所以我编辑了我的答案,以便更精确。