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
读取英特尔处理器的标称频率(标称+1 MHz),但intel_pstate
会将此文件的内容设置为最大turbo频率。尽管如此,还是有其他解决方案。Intel CPU的标称频率作为CPU型号名称的一部分写入(当输入EAX=0x01或来自/proc/cpuinfo
时,可使用CPUID指令读取),也可以读取MSR_PLATFORM_INFO (0xCE)
寄存器。
编辑:AMD处理器在/sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq
中提供标称频率,无需额外的1MHz
EDIT2:一些处理器可能有/sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_nominal_freq
文件,例如POWER9
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在指针的帮助下,文本文件中单词的频率
- 函数计算用户按下按钮的频率
- 在模拟器中使用并集来模拟CPU寄存器有多合适
- 在条件变量中触发错误信号的频率是多少
- 编写一个函数以使用 n 百分比的 CPU 使用率
- 如何禁用 CPU 的无序执行
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 分别测量每个线程上花费的 CPU 时间(C++)
- 如何在 c++ 中循环中使用频率变化的声音?
- 什么时候最好在子进程中使用 CPU 或 I/O 密集型代码 [ C++ ]
- 在程序运行时监视 VxWorks 中的任务 CPU 利用率
- 查找给定范围内最长连续 1 的频率
- 字母 字母频率
- 基准测试超过 CPU 频率
- C++Linux获得CPU标称频率
- 在获取CPU频率方面需要一些帮助
- 找出CPU时钟频率(每个核心,每个处理器)
- 如何计算CPU内核的频率