Linux CPUInfo 频率调整
导读:Linux CPU 频率调整与查看 一 关键概念与查看方法 频率信息在内核的 cpufreq 接口中,路径为:/sys/devices/system/cpu/cpu0/cpufreq/(每个 CPU 一个目录)。常用文件含义如下(单位多为...
Linux CPU 频率调整与查看
一 关键概念与查看方法
- 频率信息在内核的 cpufreq 接口中,路径为:/sys/devices/system/cpu/cpu0/cpufreq/(每个 CPU 一个目录)。常用文件含义如下(单位多为 kHz,个别为 ns):
- cpuinfo_cur_freq:当前硬件实际频率(从寄存器读取)
- scaling_cur_freq:当前策略缓存的频率(可能与硬件不同步)
- cpuinfo_min_freq / cpuinfo_max_freq:硬件支持的最小/最大频率
- scaling_min_freq / scaling_max_freq:当前策略允许的最小/最大频率
- scaling_available_frequencies:可用固定频点列表
- scaling_available_governors:可用调速器(如 performance、powersave、ondemand、conservative、userspace、schedutil 等)
- scaling_driver:当前使用的调频驱动(如 acpi-cpufreq、intel_pstate)
- scaling_governor:当前生效的调速器
- cpuinfo_transition_latency:频率切换延迟
- stats/time_in_state:各频点累计运行时间与次数
- 快速查看命令示例:
- 查看当前频率与策略:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor;cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
- 查看支持的策略与频点:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors;cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
- 查看各频点运行统计:cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
- 传统接口(不反映动态调频):cat /proc/cpuinfo(关注 cpu MHz 字段)
二 临时调整频率与策略
- 使用 cpufrequtils(Debian/Ubuntu 等)
- 安装:sudo apt-get install cpufrequtils
- 查看:cpufreq-info -m
- 设置全核为性能模式:for c in $(seq 0 $(nproc --all)); do sudo cpufreq-set -g performance -c $c; done
- 手动指定频率范围并进入用户态调速:sudo cpufreq-set -g userspace -d 800MHz -u 2.0GHz;随后用 cpufreq-set -f 1.2GHz 设定具体频点(频点必须在可用列表中)
- 使用 cpupower(RHEL/CentOS/Fedora 等)
- 安装:sudo yum install kernel-tools 或 sudo dnf install kernel-tools
- 设置全核性能模式:sudo cpupower frequency-set -g performance -c all
- 设定固定频率(单位 kHz):sudo cpupower frequency-set -f 2000000
- 直接写入 sysfs(无需额外工具)
- 切换调速器:echo performance | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
- 设定上下限:echo 1200000 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq;echo 3000000 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
- 在 userspace 模式下设定频率:echo userspace | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor;echo 2000000 | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
- 提示
- 频率值需为 kHz,且必须在 scaling_available_frequencies 范围内;设置顺序建议先定上下限,再设具体频率或切换调速器
三 永久生效与系统级配置
- 使用发行版提供的工具
- Debian/Ubuntu:编辑 /etc/default/cpufrequtils,设置 GOVERNOR=“performance”,然后 sudo systemctl restart cpufrequtils
- RHEL/CentOS/Fedora:使用 tuned,执行 sudo tuned-adm profile performance 切换到性能预设(或 power-save 节能预设)
- 使用 systemd 服务固化策略
- 新建 /etc/systemd/system/cpufreq.service:
- [Unit] Description=Set CPU frequency to performance
- [Service] Type=oneshot ExecStart=/usr/bin/cpupower frequency-set -g performance -c all
- [Install] WantedBy=multi-user.target
- 启用:sudo systemctl enable --now cpufreq.service
- 新建 /etc/systemd/system/cpufreq.service:
- 内核启动参数(仅在需要时)
- 禁用 Intel P-State(改用 acpi-cpufreq):在 /etc/default/grub 的 GRUB_CMDLINE_LINUX 中添加 intel_pstate=disable,然后更新 GRUB 并重启
- 说明
- 某些平台(如部分云服务器/虚拟机)可能限制调频或策略生效,需在 BIOS/UEFI 将电源管理设为 Max Performance 后再于系统内设置
四 常见问题与排查
- 目录或文件不存在
- 可能未启用 CPUFreq 或所需驱动未加载。检查是否存在 /sys/devices/system/cpu/cpu0/cpufreq;必要时加载相应模块(如 acpi-cpufreq、intel_pstate 等),或确认硬件/虚拟化是否支持调频
- 设置失败或无权限
- 需要 root 或具备相应能力(CAP_SYS_ADMIN);在 systemd 服务或 sudo 下执行
- 频率不变或策略被覆盖
- 检查是否设置了过低的 scaling_max_freq;确认没有其它电源管理工具(如 tuned、cpuspeed、BIOS 节能策略)覆盖设置
- 如何验证
- 对比 cpuinfo_cur_freq 与 scaling_cur_freq;观察 stats/time_in_state 是否出现目标频点的累计时间增长
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux CPUInfo 频率调整
本文地址: https://pptw.com/jishu/759938.html
