首页/系统/Linux 内核与性能调优速查/cpupower 频率与 C-state 管理
CPU 与调度60 条

cpupower 频率与 C-state 管理

cpupower 提供频率策略设置(frequency-set)、信息查询(frequency-info)、空闲状态统计与监视(idle-info / monitor)等能力。

什么是 cpupower

cpupower(linux-tools 的一部分)用来查看和设置 CPU 频率与空闲状态(C-state):frequency-info 展示当前驱动的支持情况与可用调频策略,frequency-set 切换 governor(如 performance、powersave、schedutil),monitor 与 idle-info 观察各核频率与 C-state 的停留时间。对延迟敏感的服务,把 governor 设为 performance 可以避免调频带来的性能波动,代价是功耗与温度上升。

基本信息

设置策略cpupower frequency-set -g performance
查看信息cpupower frequency-info
C-statecpupower idle-info、cpupower monitor
可用策略cpupower frequency-info --governors
持久化systemd 单元、tuned 配置或内核启动项
前提需要 cpufreq 驱动支持,虚拟机可能受限

典型使用场景

  • 延迟抖动排查:确认是否因调频导致瞬时性能下降
  • 性能压测:固定频率策略以获得可复现的基准结果
  • 功耗与性能权衡:批处理机器倾向 powersave,在线服务倾向 performance
  • 排查 C-state 深度带来的唤醒延迟
  • 虚拟化环境:确认宿主策略对虚拟机性能的影响

常用命令

常用命令
cpupower frequency-info --governors      # 本机支持的调频策略
cpupower frequency-info | head -20       # 当前策略、频率范围与驱动
sudo cpupower frequency-set -g performance   # 切到性能优先
sudo cpupower frequency-set -g powersave     # 切到省电优先
cpupower idle-info | head -20            # C-state 支持与统计
cpupower monitor                         # 实时观察各核频率
# 持久化示例(systemd):ExecStart=/usr/bin/cpupower frequency-set -g performance

常见策略对照

策略行为适用
performance尽量保持高频延迟敏感服务、压测基线
powersave倾向低频省电对延迟不敏感的离线任务
schedutil/ondemand按负载动态调整通用场景的平衡选择
conservative较缓的调整节奏部分平台默认,波动更小
设置只在当前运行状态生效,重启后会恢复默认;要持久化需要用 systemd 单元、tuned 配置或内核启动参数,三种方式的优先级与作用时机不同。
虚拟机与容器内的可见频率受宿主控制,容器里 cpupower 通常无法改变实际策略;在虚拟环境上做频率调优前先确认权限与生效范围。
理论上可以对不同核设置不同策略,但实际收益有限且容易让压测结论无法复现;运维上更推荐整机统一,便于横向对比不同机器的表现。

易错点

  • 重启后设置失效,需要 systemd 单元或 tuned 等持久化手段,否则只有在当次运行中有效
  • 部分平台 governor 集合有限,frequency-set 可能报不支持,先看 --governors 的输出
  • 把 performance 当作万能加速手段:它提升的是稳定性而不是算力,功耗与温度代价必须一起评估
  • 在虚拟机或容器里调整频率策略,实际由宿主决定,白忙一场还可能误判调优已生效

数据来源与参考

  • cpupower 官方文档(linux-tools)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌