如何在ARM/Linux机器上获取CPU时钟频率

8
答案似乎很明显,但是在https://superuser.com/questions/406141/how-to-get-an-arm-cpu-clock-speed-in-linux中给出的所有可能的答案都不适用于我。
cat /proc/cpuinfo 

只给我

processor   : 0
model name  : ARMv7 Processor rev 2 (v7l)
Features    : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32 
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x3
CPU part    : 0xc08
CPU revision    : 2

Hardware    : Generic AM33XX (Flattened Device Tree)
Revision    : 0000
Serial      : 0000000000000000

/sys/devices/system/cpu 目录下没有名为 cpuinfo_*_freq 的文件。在这台机器上我没有 hwinfodmidecode,也没有任何名为 cpu* 的可执行文件 :)

你知道如何通过程序获取或“测量”CPU的实际频率吗?


4
请注意,ARM CPU 只是核心,时钟控制是围绕它们构建的更大 SoC 的一部分,并且因供应商而异(即这是 OMAP-something 而不仅仅是包含 Cortex-A8 更重要)。如果没有一个实际了解时钟控制器参数与结果 CPU 频率之间关系的 cpufreq 驱动程序,您将无法推断任何事情。如果您很幸运,您的内核可能具有性能事件支持,这样您就可以通过计算周期来估计。 - Notlikethat
2
无论如何,实际上并没有一个强大、可移植的解决方案,因此如果你的代码“真的”需要知道CPU时钟,那么你可能需要重新考虑一下。如果这只是出于个人好奇心,那么在启动时检查引导加载程序/早期内核输出,或者在设备树中搜索,也许可以找到一些你可以拼凑起来的东西。 - Notlikethat
1
@Notlikethat:你能详细说明一下perf/计数周期方法吗?例如,提供一个链接吗? - frans
1
如问题所述 - 我没有安装hwinfodmidecode。这是一个嵌入式(yocto)Linux,内核版本为3.12。 - frans
4
实际上,perf工具甚至可以为您完成这一切 - 我刚刚在使用了perf事件构建的arm64内核上尝试了perf stat sleep 1,没有cpufreq或cpuidle,它基于周期的频率估计仅误差约为1%。 - Notlikethat
显示剩余2条评论
1个回答

0
你可以尝试使用 "dmidecode | grep MHz"。

目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接