本文作为一个提纲挈领的介绍性文档,后面会以此展开,逐渐丰富。

开发流程

针对一个PM feature进行开发,设计模型是第一步。模型设计好之后,还要保留参数接口,可以基于这些参数针对特殊个体进行优化。

建立一个可以快速迭代、准确可靠、可量化的验证环境尤其重要。一方面可以验证设计的模型是否有效、正确;另一方面还可以调整找到最适合的参数。

针对嵌入式设备来说,最主要的是达到性能和功耗的平衡:在满足性能要求的前提下,尽量降低功耗。

这就涉及到如何去量化性能(Performance)和功耗(Power)。

量化功耗比较简单,可以通过Power Monitor在测量点获得数据(测量点的确定很重要!);

量化性能就比较复杂了,针对不同的功能模块,需要不同的性能分析工具。

另外,针对不同的模块,可能需要产生特定的workload。

最后,可读性强的统计信息或者可视化图表也更有利于得出分析结果。

以LISA为例,可以使用workload rt-app产生特定调度侧率,运行时间,运行在特定CPU上的线程,保证运行环境一致。

通过devlib可以获得测试过程中的Power Monitor数据。

然后通过IPython脚本在浏览器中生成可视化图表和统计信息。

开发流程

1.设计模型:根据需求在已有框架中设计新的模型(Thermal中的IPA),或者设计一个全新的功耗模型(如EAS)。目前阶段主要是跟踪追随现有功耗模型。

2.内核实现:基于之前功耗模型,在内核中代码实现。

3.验证环境:建立验证模型的环境,一方面要有量化Performance的工具,另一方面还需要量化Power的工具。

4.模型正确与否?:通过验证环境可以查看模型是否符合预期,如果不符合就重新进行设计。

5.调整模型:根据第4步验证结果,重新调整模型缺陷。

6.优化算法:验证算法是否高效,是否更有效的提升Performance,降低Power。

Android/Linux内核Power Management介绍

Thermal Framework

cpufreq Framework

cpuidle Framework

Linux电源管理(1)_整体架构

http://www.wowotech.net/pm_subsystem/pm_architecture.html

Linux电源管理(2)_Generic PM之基本概念和软件架构

http://www.wowotech.net/pm_subsystem/generic_pm_architecture.html

Linux电源管理(3)_Generic PM之Reboot过程

http://www.wowotech.net/pm_subsystem/reboot.html

Linux电源管理(4)_Power Management Interface

http://www.wowotech.net/pm_subsystem/pm_interface.html

Linux电源管理(5)_Hibernate和Sleep功能介绍

http://www.wowotech.net/pm_subsystem/std_str_func.html

Linux电源管理(6)_Generic PM之Suspend功能

http://www.wowotech.net/pm_subsystem/suspend_and_resume.html

Linux电源管理(7)_Wakeup events framework

http://www.wowotech.net/pm_subsystem/wakeup_events_framework.html

Linux电源管理(8)_Wakeup count功能

http://www.wowotech.net/pm_subsystem/wakeup_count.html

Linux电源管理(9)_wakelocks

http://www.wowotech.net/pm_subsystem/wakelocks.html

Linux电源管理(10)_autosleep

http://www.wowotech.net/pm_subsystem/autosleep.html

Linux电源管理(11)_Runtime PM之功能描述

http://www.wowotech.net/pm_subsystem/rpm_overview.html

Linux电源管理(12)_Hibernate功能

http://www.wowotech.net/pm_subsystem/hibernation.html

Linux电源管理(13)_Driver的电源管理

http://www.wowotech.net/pm_subsystem/driver_pm.html

Linux电源管理(14)_从设备驱动的角度看电源管理

http://www.wowotech.net/pm_subsystem/device_driver_pm.html

Linux电源管理(15)_PM OPP Interface

http://www.wowotech.net/pm_subsystem/pm_opp.html

Linux common clock framework(1)_概述

http://www.wowotech.net/pm_subsystem/clk_overview.html

Linux common clock framework(2)_clock provider

http://www.wowotech.net/pm_subsystem/clock_provider.html

Linux common clock framework(3)_实现逻辑分析

http://www.wowotech.net/pm_subsystem/clock_framework_core.html

Linux PM domain framework(1)_概述和使用流程

http://www.wowotech.net/pm_subsystem/pm_domain_overview.html

Linux cpuidle framework(1)_概述和软件架构

http://www.wowotech.net/pm_subsystem/cpuidle_overview.html

Linux cpuidle framework(2)_cpuidle core

http://www.wowotech.net/pm_subsystem/cpuidle_core.html

Linux cpuidle framework(3)_ARM64 generic CPU idle driver

http://www.wowotech.net/pm_subsystem/cpuidle_arm64.html

Linux cpuidle framework(4)_menu governor

http://www.wowotech.net/pm_subsystem/cpuidle_menu_governor.html

Linux PM QoS framework(1)_概述和软件架构

http://www.wowotech.net/pm_subsystem/pm_qos_overview.html

Linux PM QoS framework(2)_PM QoS class

http://www.wowotech.net/pm_subsystem/pm_qos_class.html

Linux PM QoS framework(3)_per-device PM QoS

http://www.wowotech.net/pm_subsystem/per_device_pm_qos.html

Linux power supply class(1)_软件架构及API汇整

http://www.wowotech.net/pm_subsystem/psy_class_overview.html

Linux Regulator Framework(1)_概述

http://www.wowotech.net/pm_subsystem/regulator_framework_overview.html

Linux Regulator Framework(2)_regulator driver

http://www.wowotech.net/pm_subsystem/regulator_driver.html

Linux CPU core的电源管理(1)_概述

http://www.wowotech.net/pm_subsystem/cpu_core_pm_overview.html

Linux CPU core的电源管理(2)_cpu topology

http://www.wowotech.net/pm_subsystem/cpu_topology.html

Linux CPU core的电源管理(3)_cpu ops

http://www.wowotech.net/pm_subsystem/cpu_ops.html

Linux CPU core的电源管理(5)_cpu control及cpu hotplug

http://www.wowotech.net/pm_subsystem/cpu_hotplug.html

linux cpufreq framework(1)_概述

http://www.wowotech.net/pm_subsystem/cpufreq_overview.html

Linux cpufreq framework(2)_cpufreq driver

http://www.wowotech.net/pm_subsystem/cpufreq_driver.html

linux cpufreq framework(3)_cpufreq core

http://www.wowotech.net/pm_subsystem/cpufreq_core.html

linux cpufreq framework(4)_cpufreq governor

http://www.wowotech.net/pm_subsystem/cpufreq_governor.html

linux cpufreq framework(5)_ARM big Little driver

http://www.wowotech.net/pm_subsystem/arm_big_little_driver.html

Linux进程冻结技术

http://www.wowotech.net/pm_subsystem/237.html

Common Clock Framework系统结构

http://www.wowotech.net/pm_subsystem/ccf-arch.html

Android Power HAL

开发工具介绍

Workload Automation分析及其使用

LISA介绍及其使用方法

PyVISA介绍

用于科学计算的Python库

Power Management开发的一般流程的更多相关文章

  1. Linux下Power Management开发总结

    本文作为一个提纲挈领的介绍性文档,后面会以此展开,逐渐丰富. 1. 前言 在 <开发流程>中介绍了PM开发的一般流程,重点是好的模型.简单有效的接口参数.可量化的测试环境以及可独性强的输出 ...

  2. Zephyr的Power Management

    1 关于Zephyr Zephyr是Linux基金会维护的微内核项目,来源于WindRiver向Zephyr捐赠的Rocket RTOS内核.主要用于开发针对物联网设备的实时操作系统. Zephyr操 ...

  3. 简单几招助您加速 ARM 容器应用开发和测试流程

    随着5G时代的临近,低延迟网络.AI硬件算力提升.和智能化应用快速发展,一个万物智联的时代必将到来.我们需要将智能决策.实时处理能力从云延展到边缘和IoT设备端.阿里云容器服务推出了边缘容器,支持云- ...

  4. Git 分支-利用分支进行开发的工作流程

    3.4 Git 分支 - 利用分支进行开发的工作流程 利用分支进行开发的工作流程 现在我们已经学会了新建分支和合并分支,可以(或应该)用它来做点什么呢?在本节,我们会介绍一些利用分支进行开发的工作流程 ...

  5. cocos2d-x 3.11 游戏开发环境搭建流程

    cocos2d-x 3.11.1 游戏开发环境搭建流程 1. 准备下面的软件 1) Windows7 64Bit+ VS2013 (VC++) 这个不用多说. 2) cocos2d-x-3.11.1. ...

  6. Grunt搭建自动化web前端开发环境--完整流程

    Grunt搭建自动化web前端开发环境-完整流程 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前 ...

  7. 微信小程序开发的基本流程

    微信小程序开发的基本流程 一,微信小程序简介 1,微信小程序简称小程序,张小龙在微信公开课 Pro 上发布的小程序正式上线,时间是2017年1月9日. 2,微信小程序这个词可以分解为“微信”和“小程序 ...

  8. APP开发的基本流程

    一个独立App开发人的自白:做APP就是一场赌局,你要会押注 下面我们就直接来看下APP从业者必知的整个APP开发标准流程. 一般的APP开发及上线流程 步骤如下: 首先,制作一款APP,必须要有相关 ...

  9. 开发安卓安装流程(codorva+ionic)

    开发安卓安装流程 0 安装操作系统  Win10   用户名称尽量英文字母加数字,避免编码问题 1 安装Java sdk 1.8.0_45   所需文件 jdk-8u45-windows-x64 1. ...

随机推荐

  1. javascript性能优化:创建javascript无阻塞脚本

    javaScript 在浏览器中的运行性能,在web2.0时代显得尤为重要,成千上万行javaScript代码无疑会成为性能杀手, 在较低版本的浏览器执行JavaScript代码的时候,由于浏览器只使 ...

  2. Razor语法中绑定一个值给checkbox

    在ASP.NET MVC开发中,需要绑定一个值给checkbox标签,如下面写法,它们运行时是没有问题,照样能跑. 看看上面的语法,在绑定时,它却出现绿浪线.提不绑定的值is not a valid ...

  3. Redis高可用集群方案——哨兵

    本篇文章版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文系列地址http://www.cnblogs.com/tdws/tag/NoSql/ 本人之前有篇文章,讲到了redis主从复制,读写分 ...

  4. App内测神器之蒲公英

    一.前言部分 没使用蒲公英之前一直采用非常傻B的方式给公司App做内部测试,要么发个测试包让公司测试人员用iTUnes 自己安装 要么苦逼的一个个在我Xcode上直接安装测试包,操作起来又麻烦又苦逼, ...

  5. bzoj1503--treap

    这道题和一般的题目不同,A和S操作要修改所有节点.所以定义基准d,每个节点的工资是它的值+d,这样就能完成所有操作. I k:将值为k-d的节点插入treap A k:将d加上k S k:将d减去k, ...

  6. HTML5学习总结——canvas绘制象棋(canvas绘图)

    一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...

  7. Spark中Lambda表达式的变量作用域

    通常,我们希望能够在lambda表达式的闭合方法或类中访问其他的变量,例如: package java8test; public class T1 { public static void main( ...

  8. BW知识问答汇总

    什么是sap的星型结构,能不能详细讲解一下? Cube的星型结构中SID技术的优点有哪些? 什么是BW的星型结构,与传统的星型结构的区别是什么? SAP的星型结构相对于传统的星型结构优势? Cube与 ...

  9. [转]ASP.NET应用程序生命周期趣谈(五) IIS7瞎说

    Ps:建议初学者在阅读本文之前,先简要了解一下之前的几篇文章,以便于熟悉本文提到的一些关于IIS6的内容,方便理解.仅供参考. PS:为什么叫瞎说呢?我觉得自己理解的并不到位,只能是作为一个传声筒,希 ...

  10. 转载文章(Redis中对key的操作)

    转载地址:http://www.cnblogs.com/stephen-liu74/archive/2012/03/26/2356951.html 一.概述: 在该系列的前几篇博客中,主要讲述的是与R ...