redhat 查看CPU frequency scaling(CPU频率缩放)
CPU频率缩放使操作系统可以向上或向下缩放CPU频率,以节省电量。可以根据系统负载,响应ACPI事件自动缩放CPU频率,也可以通过用户空间程序手动缩放CPU频率。
CPU频率缩放在Linux内核中实现,基础架构称为cpufreq。从内核3.4开始,必需的模块会自动加载,并且默认情况下会启用推荐的按需调控器。但是,为您的桌面环境提供的用户空间工具(如cpupower,acpid,笔记本电脑模式工具或GUI工具)仍可用于高级配置。
CPU动态节能技术用于降低服务器功耗,通过选择系统空闲状态不同的电源管理策 略,可以实现不同程度降低服务器功耗,更低的功耗策略意味着CPU唤醒更慢对性能 影响更大。对于对时延和性能要求高的应用,建议关闭CPU的动态调节功能,禁止 CPU休眠,并把CPU频率固定到最高。通常建议在服务器BIOS中修改电源管理为Performance,如果发现CPU模式为conservative或者powersave,可以使用cpupower设置CPU Performance模式,效果也是相当显著的。
CPU优化建议使用cpupower设置CPU Performance模式
cpufreq的五种模式
cpufreq是一个动态调整cpu频率的模块,系统启动时生成一个文件夹/sys/devices/system/cpu/cpu0/cpufreq/,里面有几个文件,其中scaling_min_freq代表最低频率,scaling_max_freq代表最高频率,scalin_governor代表cpu频率调整模式,用它来控制CPU频率。
cd /sys/devices/system/cpu/cpu0/cpufreq/ affected_cpus bios_limit cpuinfo_cur_freq cpuinfo_max_freq cpuinfo_min_freq cpuinfo_transition_latency freqdomain_cpus related_cpus scaling_available_frequencies scaling_available_governors scaling_cur_freq scaling_driver scaling_governor scaling_max_freq scaling_min_freq scaling_setspeed # 查看当前的调节器 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor conservative # 查看频率信息 cpupower frequency-info analyzing CPU 0: driver: acpi-cpufreq CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 10.0 us hardware limits: 800 MHz - 2.10 GHz available frequency steps: 2.10 GHz, 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz available cpufreq governors: conservative userspace powersave ondemand performance current policy: frequency should be within 800 MHz and 2.10 GHz. The governor "performance" may decide which speed to use within this range. current CPU frequency: Unable to call hardware current CPU frequency: 2.10 GHz (asserted by call to kernel) boost state support: Supported: yes Active: yes
- performance: 顾名思义只注重效率,将CPU频率固定工作在其支持的最高运行频率上,而不动态调节。
- Userspace:最早的cpufreq子系统通过userspace governor为用户提供了这种灵活性。系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置
- powersave: 将CPU频率设置为最低的所谓“省电”模式,CPU会固定工作在其支持的最低运行频率上。因此这两种governors 都属于静态governor,即在使用它们时CPU 的运行频率不会根据系统运行时负载的变化动态作出调整。这两种governors 对应的是两种极端的应用场景,使用performance governor 是对系统高性能的最大追求,而使用powersave governor 则是对系统低功耗的最大追求。
- ondemand: 按需快速动态调整CPU频率, 一有cpu计算量的任务,就会立即达到最大频率运行,等执行完毕就立即回到最低频率;ondemand:userspace是内核态的检测,用户态调整,效率低。而ondemand正是人们长期以来希望看到的一个完全在内核态下工作并且能够以更加细粒度的时间间隔对系统负载情况进行采样分析的governor。 在 ondemand governor 监测到系统负载超过 up_threshold 所设定的百分比时,说明用户当前需要 CPU 提供更强大的处理能力,因此 ondemand governor 会将CPU设置在最高频率上运行。但是当 ondemand governor 监测到系统负载下降,可以降低 CPU 的运行频率时,到底应该降低到哪个频率呢? ondemand governor 的最初实现是在可选的频率范围内调低至下一个可用频率,例如 CPU 支持三个可选频率,分别为 1.67GHz、1.33GHz 和 1GHz ,如果 CPU 运行在 1.67GHz 时 ondemand governor 发现可以降低运行频率,那么 1.33GHz 将被选作降频的目标频率。
- conservative: 与ondemand不同,平滑地调整CPU频率,频率的升降是渐变式的,会自动在频率上下限调整,和ondemand的区别在于它会按需分配频率,而不是一味追求最高频率;
cpupower设置performance
从conservative或者powersave切换到performance的效果还是杠杠的
# CentOS 安装 kernel-tools yum install kernel-tools # Ubuntu 安装 CPU 模式无图形化切换器 apt install cpufrequtils # cpupower设置performance cpupower frequency-set -g performance # 查看当前的调节器 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor performance
作者:王奥OX
链接:https://www.jianshu.com/p/e1a37771c68e
扩展阅读
CPU frequency scaling - https://wiki.archlinux.org/index.php/CPU_frequency_scaling
华为2288Hv5服务器如何开启CPU Performance与Turbostat - https://www.xxshell.com/2886.html