C stat
电源节能的一个feature, 通过在cpu 负载不忙的时候,通过关闭cpu内部的不同器件的电源,来达到节能的目的。C state节能有两个,一个是package Cstate,一个是Core Cstate. Package对应的是一个物理cpu,Core对应的就是物理cpu内部的物理core。
C0:是一个Active状态,说明正在执行指令。就是有任务正在运行时的状态。注意,这个状态并不意味着cpu是最高频率,只要有任务在运行,cpu即使低频率也是在C0状态。从供电角度看,Cpu所有的器件都在供电。
C1:Halt状态,没有load在运行,此时core的clock关闭,此状态会很快返回C0状态。
C1E:这个也属于C1类型,但是会用最低频率和电压降低
P-state
为P-state 只和cpu的频率相关。当前,P-State是cpu电压和频率的操作点的集合,电压和频率都会随着P state状态的改变而同时发生变化。P state目的根据负载是动态的增加和减少cpu电压和频率,以达到用户在节能和性能方面的需求。
Pstate针对 C-State C0 ,其他C state 都是节能状态 ,不需要Pstate
性能的误区:
只设置了高频率就好了,比如一般人都会用cpupower frequency-set -g performance这个命令这个命令使能后,某个cpu会达到睿频最大的频率。但是别忘了,当内核指令执行到类似halt和mwait指令时,cpu还是会进入C state睡眠的状态的,导致唤醒时运行效率降低,正确的是首先查看当前C state一共几个状态
————————————————
1.查看P state设置 cpupower fre quency-info
基本概念
CPU的工作模式:ondemand、interactive、conservative保守模式省电、performance、powersave省电模式。 C-state 是cpu的睡眠状态,C0正常工作,C1-5表示睡眠依次加深,更节能;P-state是cpu的运行状态,P0是最高状态,P1/2性能损失但节能。需安装 apt install cpufrequtils。
查看方法
查看支持的工作模式:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
查看当前工作模式:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
查看CPU idle state 信息:cpupower idle-info 或 cat /sys/devices/system/cpu/cpuidle/current_driver ,cat /sys/devices/system/cpu/cpuidle/current_governor_ro
查看频率:cpupower frequency-info 或 cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
修改方法
固定主频步:先设置工作模式cpupower frequency-set -g performance,然后设置最小主频cpupower frequency-set -d 2.4G, 最大主频cpupower frequency-set -u 2.4G;
禁用cpu空闲时休眠cpupower idle-set -d POLL,cpupower idle-set -d 1~6)
Intel 禁用p-state: 修改/etc/default/grub,在GRUB_CMDLINE_LINUX_DEFUALT="pstate=disable", 更新grup: sudo update-grub
processor.limit cstate=0 到 /etc/default/grub