我今天想查一下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过热的情况
相关链接:我的嵌入式Linux相关文章 、我的Linux相关文章