Linux下Power Management开发总结

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

关于Linux省电:

保持CPU处于工作状态时:

1. 设备使能RPM,不使用的设备动态关闭。

2. cpufreq动态调节CPU/GPU的频率电压,以达到降低功耗的目的。

3. cpuidle让CPU进入idle状态,或者深睡。

4. cpu hotplug对不使用的CPU进行动态热插拔。

CPU进入睡眠状态:

1. suspend,如果整个系统无事可干进入suspend,包括两种suspend idle和suspend to ram。

2. resume,中断进行唤醒。

开发流程

针对一个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

Android/Linux Thermal框架分析及其Governor对比

Android/Linux Thermal Governor之IPA分析与使用

cpufreq Framework

Linux动态频率调节系统CPUFreq之一:概述

Linux动态频率调节系统CPUFreq之二:核心(core)架构与API

cpuidle Framework

Suspend分析与优化

Suspend to RAM和Suspend to Idle分析,以及在HiKey上性能对比

cpu_ops、suspend_ops、arm_idle_driver以及machine_restart/machine_power_off到底层PSCI Firmware分析

WowoTech整理文档

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库

Linux Power Management Debug

时间: 2024-11-10 11:33:43

Linux下Power Management开发总结的相关文章

Power Management开发的一般模型

本文作为一个提供挈领的介绍性文档,后面会以此展开,逐渐丰富. 一般开发模型 针对一个PM feature进行开发,设计模型是第一步.模型设计好之后,还要保留参数接口,可以基于这些参数针对特殊个体进行优化. 建立一个可以快速迭代.准确可靠.可量化的验证环境尤其重要.一方面可以验证设计的模型是否有效.正确:另一方面还可以调整找到最适合的参数. 针对嵌入式设备来说,最主要的是达到性能和功耗的平衡:在满足性能要求的前提下,尽量降低功耗. 这就涉及到如何去量化性能(Performance)和功耗(Powe

Linux下spi驱动开发

转载至:http://www.embedu.org/Column/Column367.htm 作者:刘洪涛,华清远见嵌入式学院讲师. 一.概述 基于子系统去开发驱动程序已经是linux内核中普遍的做法了.前面写过基于I2C子系 统的驱动开发.本文介绍另外一种常用总线SPI的开发方法.SPI子系统的开发和I2C有很多的相似性,大家可以对比学习.本主题分为两个部分叙述,第一 部分介绍基于SPI子系统开发的理论框架:第二部分以华清远见教学平台FS_S5PC100上的M25P10芯片为例(内核版本2.6

linux下配置LAMP开发环境,以及常用小细节

本来安装没什么可说到.但是在linux当中容易会出现各种各样到问题.我安装以后导致各种问题 比如php无法正常解析,数据库无法关闭,Apache无法开启等等........ 所以搞得我比较郁闷,现在把过程分享下,大家不要在走弯路 最后按照这个顺序来装,避免出问题 [plain] view plaincopy sudo apt-get install mysql-server-5.0 sudo apt-get install apache2 sudo apt-get install php5 li

Linux下搭建Java开发环境

Red Hat Package Manager 简称rpm rpm格式的文件就是我们可以使用RPM命令进行管理的软件包格式的文件 JDK的安装 #sh /root/Desktop/jdk-6u23-linux-i586-rpm.bin .bin 可以使用sh命令来解压执行 Linux的用户的登录过程 /etc/profile /etc/profile.d(各个脚本) /etc/bash.bashrc /home/[username]具体用户目录/.bashrc .bash_profile JDK

Linux下使用Eclipse开发Hadoop应用程序

在前面一篇文章中介绍了如果在完全分布式的环境下搭建Hadoop0.20.2,现在就再利用这个环境完成开发. 首先用hadoop这个用户登录linux系统(hadoop用户在前面一篇文章中创建的),然后下载eclipse的tar.gz包到/home/hadoop/这个目录下,直接解压缩,于是就会存在/home/hadoop/eclipse这个目录.在开发之前需要将hadoop0.20.2目录下面的一个jar复制到eclipse下面去.(注:在上一篇文章中我将hadoop0.20.2文件夹修改成了h

Linux教程:如何在Linux下进行C++开发?

Linux是一类Unix计算机操作系统的统称,Linux操作系统的内核的名字也是“Linux”, 在Linux下进行C++开发,需要注意许多问题,比如:减少不必要的编辑动作,减少编辑的时间. Windows下,开发工具多以集成开发环境IDE的形式展现给最终用户.例如,VS2005集成了编辑器,宏汇编ml,C /C++编译器cl,资源编译器rc,调试器,文档生成工具, nmake.它们以集成方式提供给最终用户,对于初学者而言十分方便. 但是,这种商业模式,直接导致用户可定制性差,不利于自动化,集成

Linux下配置PHP开发环境

转载于: http://www.uxtribe.com/php/405.html 该站下有系列PHP文章. 在Linux下搭建PHP环境比Windows下要复杂得多.除了安装Apache,PHP等软件外,还要安装一些相关工具,设置必要参数.而且,如果要使用PHP扩展库,还要进行编译.安装之前要准备如下安装包: http-2.2.8.tar.gz.下载地址:http://www.apache.org. php-5.2.5.tar.gz.下载地址:http://www.php.net/downloa

Linux下搭建PHP开发环境(LAMP)

LAMP:Linux+Apache+Mysql/MariaDB+Perl/PHP/Python 安装方法如下: 注:Ubuntu下可使用sudo su 命名切换到root用户. 开始安装之前,先执行EZHTTP安装前的准备工作. 一.使用screen(可选) 由于编译安装Nginx Apache PHP MySQL等软件会花费比较长的时间,难免会出现由于网络意外中断而导致安装也中断了,所以为了避免此问题,可以使用screen来安装. screen的使用方法如下: 1.安装screen ubunt

《Python入门》Linux 下 Python Web开发环境搭建笔记

之前写过 Windows 7下Python Web开发环境搭建笔记,今天写一下在Linux系统下搭建Python Web的开发测试环境. 我使用的系统是:ubuntu 14.04 server,根据个人经验,CentOS 6.5 下也适用. 关于Python的版本 进入Python的网站,鼠标移到导航条上的下载,我们会发现提供两下主版本的下载链接! 这两个之间存在什么差别呢? 个人理解,2.7.x的版本为更加稳定的版本,而3.x的版本则是比较前卫的版本,包含了很多新功能新特性之类的: 但如果想要