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

2022年 5月 9日 102点热度 0人点赞 0条评论

原文链接:https://blog.csdn.net/flowingflying/article/details/5645013

我今天想查一下 Intel 工程师放在 CSDN 的一个视频, 名字倒是查出来叫:Moblin 系统的快速启动核心技术剖析, 但是怎么找也找不找了. 这是一个好的技术介绍. 难道给删除了. 不知道 CSDN 是否上次查图片的时候, 禁止了所有的视频. 没办法了, 翻箱倒柜, 找到了以前做的一些笔记, 先记录下来. 不过不保证完全忠于原著. 可能有删减. 聊胜于无嘛. 如果能再次公开那些技术视频就好了, 我本来是想找 codec 和容器的资料, 记得也是 Intel 工程师给的, 后来发现什么都不见了.

Intel 在 Meego(原 Moblin) 的革新, 一是快速启动, 二是低功耗, 进入了 Linux 的 mainline, 使得阿土 (ubutu) 和 fadora 能号称在十秒的级别上开机启动. 这在手持设备中是非常重要的. 下面记录可能不完全反映原来视频的内容, 加入了我的一些理解, 对不感兴趣的部分跳过, 如果有任何技术问题, 应当不归于 INTEL 的工程师.

快速启动

系统的开机, 从我们按 power 开始到能够正常使用, 包含三部分的内容:

  1. BIOS/BSP 的启动时间
  2. 系统平台 (操作系统) 的启动时间
  3. 桌面 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 过热的情况

本文来自:https://blog.duhbb.com

本文链接地址:关于Linux的快速启动(fastboot)和低功耗(low power)的学习记录,英雄不问来路,转载请注明出处,谢谢。

有话想说:那就赶紧去给我留言吧。

rainbow

这个人很懒,什么都没留下

文章评论