cpuidle
cpu Idle状态可以分为很多种Idle状态,在CPU准备进入idle的时候在很多状态中进行选择以达到省电的目的。
CPU Idle相关的软件架构可以分以下几种:
- CPUIDLE core:CPUIdle的内核驱动,在kernel\drivers\cpuidle目录下。
CPUIDLE sysfs:这部分向用户层提供CPUIDLE的相关节点,以提供信息给用户。
在/sys/devices/system/cpu/cpuidle下可以查到当前的CPUIdle的驱动的名字和governor的种类。
在/sys/devices/system/cpu/cpu0/cpuidle下可以看到几种CPUIDLE状态,在相应的目录下有lantency,名字等信息。
CPUIdle govenor:根据latency,residency等,根据某种算法选择一个合适的CPUIDLE状态。
比如cpuidle governor里边的menu algorithm会根据之前的idle time的统计结果来预测接下来的idle time,并从中选择合适的idle state。
CPUIdle状态
以S5PC210为例,它有以下几种CPUIdle状态
- NORMAL : IDLE (Wait For Interrupt)
- AFTR : ARM Off and TOP Running
- LPA : Low Power Audio
- DEEP-STOP
- SLEEP
每种状态关闭的模块以及latency,power saving也是各有不同。
进入CPUIdle,选择CPUIdle state的过程
Governor
以下以menu governor为例说明
在众多Idle state中选择合适的idle state必须要考虑
- Energy break event point
- Performance impact
- Latency tolerance(from pmqos infrastructure) ?
Energy break event point
1.target_residency
- 进入每个IDLE mode的时候,都是会产生energy cost
- 所以在”target_residency”里写入进入每个IDLE state所需的energy cost。
- governor->select()选择合适的idle state所要满足的条件为
- target_residency > predicted idle duration的时候,governor->select()不会选择这个IDLE State!!这里predicted idle duration表示预测的下一个idle state可以持续的时间
2.correction_factor[]
为了提交预测下一个idle state所停留的时间而导入的内容
Performance Impact
- exit_latency
- 각 IDLE state(C state)는 종료될 때 요구되는 exit_latency 가 존재하며, exit_latency는 Performace impact로 작용 됨
- “exit_latency“ 필드에 각 IDLE state의 예상 종료시 요구되는 latency를 명시 함
개발자에 의해서 정의되며, C0에서 C7으로 갈 수록 latency는 점점 커짐
struct cpuidle_state {
unsigned int exit_latency; /* in US */
int power_usage; /* in mW */
unsigned int target_residency; /* in US */
bool disabled; /* disabled on all CPUs */
}
相关阅读
Linux内核spin_lock与spin_lock_irq分析
在Linux内核中何时使用spin_lock,何时使用spin_lock_irqsave很容易混淆。首先看一下代码是如何实现的。spin_lock的调用关系spin_l
在 linux 系统下进行串口调试或者开发时配合简单易用的串口调试工具那是必不可少。这篇博客对当前用的较多的,且我自己经常用的一
iptables 是 Linux 管理员用来设置 IPv4 数据包过滤条件和 NAT 的命令行工具。iptables 工具运行在用户态,主要是设置各种规则。而
一、查看日志文件 Linux查看/var/log/wtmp文件查看可疑IP登陆 last -f /var/log/wtmp 该日志文件永久记录每个用户登录、注销
转自:http://gywbd.github.io/posts/2014/8/50-linux-commands.html这篇文章翻译自http://www.thegeekstuff.com/2010/11/50-linux