cpufreq-info -w与cpufreq-info -f输出值差异过大的疑问
cpufreq-info -w与cpufreq-info -f输出值差异过大的疑问
环境信息
系统内核版本
uname -r # 输出: 5.15.0-91-generic
CPU信息
lscpu # 输出: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 52 bits physical, 57 bits virtual Byte Order: Little Endian CPU(s): 384 On-line CPU(s) list: 0-383 Vendor ID: AuthenticAMD Model name: AMD EPYC 9654 96-Core Processor
操作系统版本
cat /etc/os-release # 输出: PRETTY_NAME="Ubuntu 22.04.3 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.3 LTS (Jammy Jellyfish)" VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=jammy
问题描述
当我尝试获取当前CPU时钟频率时,使用cpufreq-info -w和cpufreq-info -f得到了差异极大的结果,想请教这是为什么?以及哪一个数值才是我需要关注的当前CPU运行频率?
问题解答
嗨,这个疑问其实挺常见的,核心原因很简单——这两个命令查的根本不是同一个东西😉
先搞懂两个参数的本质区别
cpufreq-info -f:CPU实时运行频率
这个值是CPU此刻实际在工作的频率,完全跟着系统负载和电源管理策略动态变化。你的AMD EPYC 9654是服务器级CPU,系统默认的电源管理策略(比如ondemand或者AMD P-state)会非常智能:当系统空载/负载很低时,CPU会自动降频到很低的数值来节省功耗;一旦有计算任务上来,会瞬间拉升频率(甚至跑到睿频上限)来满足性能需求。cpufreq-info -w:CPU硬件标称的频率上限
这个值是你这颗CPU出厂时硬件设计支持的最高稳定频率(对应AMD EPYC 9654的话,就是3.7GHz左右的睿频上限),它是一个固定的硬件参数,不会随系统状态变化。
哪一个值才是你需要的?
- 如果你想知道当前CPU实际在跑多快,看
cpufreq-info -f的结果就对了,它是实时的; - 如果你想确认你的CPU硬件本身能达到的最高性能上限,那
cpufreq-info -w的结果就是你要的。
验证方法(可以自己试试)
你可以跑一个CPU满负载的测试命令,比如:
stress -c 384
然后在另一个终端窗口里再跑cpufreq-info -f,这时候你会看到输出的频率会非常接近甚至达到cpufreq-info -w的数值——因为CPU满负载了,电源管理策略会让它跑到硬件允许的最高频率。
备注:内容来源于stack exchange,提问作者xiaojueguan
相关产品推荐
相关产品推荐

