打印

关于Linux的快速启动(fastboot)和低功耗(low power)的学习...

[复制链接]
1000|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2020-3-23 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我今天想查一下Intel工程师放在CSDN的一个视频,名字倒是查出来叫:Moblin系统的快速启动核心技术剖析,但是怎么找也找不找了。这是一个好的技术介绍。难道给删除了。不知道CSDN是否上次查图片的时候,禁止了所有的视频。没办法了,翻箱倒柜,找到了以前做的一些笔记,先记录下来。不过不保证完全忠于原著。可能有删减。聊胜于无嘛。如果能再次公开那些技术视频就好了,我本来是想找codec和容器的资料,记得也是Intel工程师给的,后来发现什么都不见了。  Intel在Meego(原Moblin)的革新,一是快速启动,二是低功耗,进入了Linux的mainline,使得阿土(ubutu)和fadora能号称在十秒的级别上开机启动。这在手持设备中是非常重要的。下面记录可能不完全反映原来视频的内容,加入了我的一些理解,对不感兴趣的部分跳过,如果有任何技术问题,应当不归于INTEL的工程师。
快速启动
  系统的开机,从我们按power开始到能够正常使用,包含三部分的内容:一、BIOS/BSP的启动时间;二、系统平台(操作系统)的启动时间;三、桌面UI和应用的启动时间。
  第一部分和硬件有关,和系统平台无关,不讨论。
  第二部分是实现快速启动的核心关键部分。有下面的四个关键技术:
关键技术1:内核模块(包括设备驱动)的快速加载
尽可能将内核模块编译到Kernel image内部:减少需要另行独立加载的模块的方式,节省时间异步内核模块初始化:提高内核模块处理的并行化,可同时检测多个硬件设备来减少启动时间。关键技术2:加速文件读取效率(Sreadahead:super read ahead)
采用Sreadahead,提高对SSD的文件读取速度:对启动文件放入kernel page cache中。关键技术3:优化显示驱动,实现X server的快速启动(fast X)
减少显卡驱动加载所消耗的时间,减少显卡驱动所占内存加速X Server启动时间:对XKB(leyboard layouts)结果进行缓存,以便以后直接使用,X可直接使用kernel启动时检测到的使用模式。关键技术4:优化init脚本
精简不必要的后台程序和服务(nfs server, mail server)并行启动必要的后台程序服务(例如dbus,hal,connman)  第三部分是我们启动上层应用和服务,在智能手机中要好好斟酌启动的顺序。
低功耗技术
关键技术1:减少设备组件/外设的功耗
  • 原则1:对不使用的组件/外设关闭,如果无法关闭,进入睡眠以降低功耗
  • 原则2:对于休眠的组件/外设,非必要时不唤醒
  • 原则3:在一个唤醒周期中,尽可能完成更多的工作,使得组件/外设可以更长的休眠时间
  • 基础:部件休眠控制技术
  • 方式:
    • 各功能块独立供电,优选底功耗器件,可进行开关控制,用户可设置节能模式
    • 电源优化管理功能设计、实现底层硬件、系统软件和应用软件多层协同
    • 状态切换机制:Idle态(调低CPU时钟频率,关闭部分部件,动态电压调节)
  • 例子:
    • 例子1:屏低功耗:背光自适应调节优先管理以及屏保
    • 例子2:智能的网络连接管理:对于wifi/wapi,避免长时间不断搜索,对与数据包的转发,先存起来,在周期广播信标帧是才发送,避免填写模块一直处于工作状态,提供休眠期
    • 例子3:USB,对于slave模式,从master中充电,对于master模式,不工作时进入休眠。

关键技术2:系统平台低功耗方案
  • 原则1:CPU在工作唤醒周期,尽可能多处理,以尽可能延长睡眠时期;
  • 原则2:多个事件同时唤醒,降低唤醒频率
  • 基础:CPU的低功耗工作模式
  • 方式1:kernel低功耗优化
    • 例子1:Linux Kernel对电源管理的优化:根据过往的历史记录判断当前进入哪个级别的C state 。
    • 例子2:对P State的智能控制:控制采用On demand cupfreq govener,即按需CPU频率调节技术。
    • 例子3:尽可能同步唤醒:包括kernel tickless idle, 全局Timer技术,合并/同步外设中断时钟
  • 方式2:用户空间程序的低功耗优化
    • 例子1:避免频繁的中断事件:优化系统各应用,合并/同步事件的触发事件
    • 例子2:减少频繁I/O处理,合并写操作,使用较大缓存,减少读写操作的频率
    • 例子3:在应用程序开发中:处理时应尽可能完成多的任务,允许休眠更长的时间
    • 例子4:硬件编解码比软件编解码效率高

背景知识:CPU的三个state
  • C State:A set of Idle States,即一系列休眠状态:关闭不使用的cycle,越高级别的C state,休眠越深,但唤醒需要的时间和耗电更大
  • P state方式:Performent State, 通过降低CPU频减少CPU点压(降频减压)来减少功耗,可采用按需频率管控进行优化(Ondemand cpufreq governor)。【按需分配是最理想的模式】
  • 此外还有T state,Thermal State:是用于处理CPU过热的情况



@海中水 @icecut


使用特权

评论回复

相关帖子

沙发
海中水| | 2020-3-23 13:03 | 只看该作者
之前网上的东西有些是找不到的,应该是限制了。

使用特权

评论回复
板凳
keer_zu|  楼主 | 2020-3-23 16:47 | 只看该作者
海中水 发表于 2020-3-23 13:03
之前网上的东西有些是找不到的,应该是限制了。

比如说呢?低功耗你那边最近进展如何

使用特权

评论回复
地板
海中水| | 2020-3-23 20:10 | 只看该作者
keer_zu 发表于 2020-3-23 16:47
比如说呢?低功耗你那边最近进展如何

直接找的一些规格书,如TI的对应的规格书;低功耗的我们的硬件是找别人设计的是没有问题的,他们的方案就是那么定的。

使用特权

评论回复
5
keer_zu|  楼主 | 2020-3-24 08:56 | 只看该作者
海中水 发表于 2020-3-23 20:10
直接找的一些规格书,如TI的对应的规格书;低功耗的我们的硬件是找别人设计的是没有问题的,他们的方案就 ...

是的,低功耗是软件和硬件协力做到的,软件这部分呢?操作系统用的是哪一个

使用特权

评论回复
6
海中水| | 2020-3-24 09:28 | 只看该作者
keer_zu 发表于 2020-3-24 08:56
是的,低功耗是软件和硬件协力做到的,软件这部分呢?操作系统用的是哪一个 ...

操作系统用的Linux。

使用特权

评论回复
7
keer_zu|  楼主 | 2020-3-24 09:43 | 只看该作者
海中水 发表于 2020-3-24 09:28
操作系统用的Linux。

有没有启动时间优化需求

使用特权

评论回复
8
海中水| | 2020-3-25 09:27 | 只看该作者
keer_zu 发表于 2020-3-24 09:43
有没有启动时间优化需求

启动时间优化会根据状态进行分批的加载。

使用特权

评论回复
9
keer_zu|  楼主 | 2020-3-25 13:03 | 只看该作者
海中水 发表于 2020-3-25 09:27
启动时间优化会根据状态进行分批的加载。

这也是一种解决途径

使用特权

评论回复
10
海中水| | 2020-3-26 09:30 | 只看该作者
keer_zu 发表于 2020-3-25 13:03
这也是一种解决途径

我们当时在加载这块下了很大功夫

使用特权

评论回复
11
keer_zu|  楼主 | 2020-3-26 09:36 | 只看该作者
海中水 发表于 2020-3-26 09:30
我们当时在加载这块下了很大功夫

我看IMX6/7有自己的完整启动优化时间,在youtube上有人做到一秒之内启动。有空可以一起研究一下怎么实现的。

使用特权

评论回复
12
海中水| | 2020-3-27 10:22 | 只看该作者
keer_zu 发表于 2020-3-26 09:36
我看IMX6/7有自己的完整启动优化时间,在youtube上有人做到一秒之内启动。有空可以一起研究一下怎么实现 ...

OK!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1350

主题

12427

帖子

53

粉丝