码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下功耗测试开发初探

时间:2017-08-17 14:45:37      阅读:528      评论:0      收藏:0      [点我收藏+]

标签:lock   2.4   处理   pow   其他   class   启动   wak   频率   

1、前言

Linux嵌入式设备开发,对于功耗要求较高。在遇到问题的时候,定位手段有限。

关于功耗一种是静态功耗,指的是某一种状态下的功耗情况,在这种状态下尽量低的功耗,比如cpuidle、suspend、cpuhotplug等;

另一种是动态功耗,指的是各种状态的切换,比如susped-resume、cpuidle不同状态切换、中断、wakelock等等。

 

静态功耗的调试,可以在特定状态下测量功耗,逐步优化;但是在动态功耗,也即系统运行时,影响功耗的因素千差万别,瞬息万变,就需要在测量功耗的时候抓住系统运行轨迹。

2、需要抓住哪些锚点?

要测量功耗因素,就要了解那些内核行为导致了功耗增加或减少?具体需要抓住哪些轨迹,比如:

 

1. suspend-resume(何时进入suspend、持续时间、何时退出suspend、谁唤醒了系统):machine_suspend

2. cpuidle(切换点、时长、状态):cpuidle

3. cpufreq(何时切换、切换到什么频点、持续多久):cpu_frequency

4. 中断(哪个中断、何时触发、中断函数处理耗时):irq_handler_entry、irq_handler_exit

5. wakeup source():wakeup_source_activate、wakeup_source_deactivate

6. 电源域(哪个电源域、设置状态):power_domain_target

7. 时钟(哪个时钟、何时开、何时关、频率变动):clock_enable、clock_disable、clock_set_rate

 

 

其他轨迹:

8. 定时器(定时器创建、启动、超时、取消,包括低精度定时器和高精度定时器):低精度定时器(timer_init、timer_start、timer_cancel、timer_expire_entry、timer_expire_exit)、高精度定时器(hrtimer_init、hrtimer_start、hrtimer_expire_entry、hrtimer_expire_exit、hrtimer_cancel)

9. ...

可以把这些一个个Traceevents看做功耗信息锚点,下面逐个分析这些锚点。

2.1 trace_machine_suspend

2.2 trace_cpu_idle_rcuidle/

2.3 trace_cpu_frequency

2.4 trace_irq_handler_entry/trace_irq_handler_exit

2.5 trace_wakeup_source_activate/trace_wakeup_source_deactivate

2.6

2.7

2.8 trace_timer_start/trace_timer_cancel/trace_timer_expire_entry/trace_timer_expire_exit

 

Linux下功耗测试开发初探

标签:lock   2.4   处理   pow   其他   class   启动   wak   频率   

原文地址:http://www.cnblogs.com/arnoldlu/p/7381039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!