什么是 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-state | cpupower 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 通常无法改变实际策略;在虚拟环境上做频率调优前先确认权限与生效范围。
理论上可以对不同核设置不同策略,但实际收益有限且容易让压测结论无法复现;运维上更推荐整机统一,便于横向对比不同机器的表现。