2019独角兽企业重金招聘Python工程师标准>>>

进行 Linux 内核与固件开发的时候,往往需要多次的重启,会浪费大把的时间。


在所有我拥有或使用过的电脑中,启动最快的那台是 20 世纪 80 年代的电脑。在你把手从电源键移到键盘上的时候,BASIC 解释器已经在等待你输入命令了。对于现代的电脑,启动时间从笔记本电脑的 15 秒到小型家庭服务器的数分钟不等。为什么它们的启动时间有差别?

那台直接启动到 BASIC 命令行提示符的 20 世纪 80 年代微电脑,有着一颗非常简单的 CPU,它在通电的时候就立即开始从一个内存地址中获取和执行指令。因为这些系统的 BASIC 在 ROM 里面,基本不需要载入的时间——你很快就进到 BASIC 命令提示符中了。同时代更加复杂的系统,比如 IBM PC 或 Macintosh,需要一段可观的时间来启动(大约 30 秒),尽管这主要是因为需要从软盘上读取操作系统的缘故。在可以加载操作系统之前,只有很小一部分时间是花费在固件上的。

现代服务器往往在从磁盘上读取操作系统之前,在固件上花费了数分钟而不是数秒。这主要是因为现代系统日益增加的复杂性。CPU 不再能够只是运行起来就开始全速执行指令,我们已经习惯于 CPU 频率变化、节省能源的待机状态以及 CPU 多核。实际上,在现代 CPU 内部有数量惊人的更简单的处理器,它们协助主 CPU 核心启动并提供运行时服务,比如在过热的时候压制频率。在绝大多数 CPU 架构中,在你的 CPU 内的这些核心上运行的代码都以不透明的二进制 blob 形式提供。

在 OpenPOWER 系统上,所有运行在 CPU 内部每个核心的指令都是开源的。在有 OpenBMC(比如 IBM 的 AC922 系统和 Raptor 的 TALOS II 以及 Blackbird 系统)的机器上,这还延伸到了运行在基板管理控制器Baseboard Management Controller上的代码。这就意味着我们可以一探究竟,到底为什么从接入电源线到显示出熟悉的登录界面花了这么长时间。

如果你是内核相关团队的一员,你可能启动过许多内核。如果你是固件相关团队的一员,你可能要启动许多不同的固件映像,接着是一个操作系统,来确保你的固件仍能工作。如果我们可以减少硬件的启动时间,这些团队可以更有生产力,并且终端用户在搭建系统或重启安装固件或系统更新的时候会对此表示感激。

过去的几年,Linux 发行版的启动时间已经做了很多改善。现代的初始化系统在处理并行和按需任务上做得很好。在一个现代系统上,一旦内核开始执行,它可以在短短数秒内进入登录提示符界面。这里短短的数秒不是优化启动时间的下手之处,我们要到更早的地方:在我们到达操作系统之前。

在 OpenPOWER 系统上,固件通过启动一个存储在固件闪存芯片上的 Linux 内核来加载操作系统,它运行一个叫做 Petitboot 的用户态程序去寻找用户想要启动的系统所在磁盘,并通过 kexec 启动它。有了这些优化,启动 Petitboot 环境只占了启动时间的百分之几,所以我们还得从其他地方寻找优化项。

在 Petitboot 环境启动前,有一个先导固件,叫做 Skiboot,在它之前有个 Hostboot。在 Hostboot 之前是 Self-Boot Engine,一个晶圆切片(die)上的单独核心,它启动单个 CPU 核心并执行来自 Level 3 缓存的指令。这些组件是我们可以在减少启动时间上取得进展的主要部分,因为它们花费了启动的绝大部分时间。或许这些组件中的一部分没有进行足够的优化或尽可能做到并行?

另一个研究路径是重启时间而不是启动时间。在重启的时候,我们真的需要对所有硬件重新初始化吗?

正如任何现代系统那样,改善启动(或重启)时间的方案已经变成了更多的并行执行、解决遗留问题、(可以认为)作弊的结合体。

转载于:https://my.oschina.net/u/3585265/blog/3026134

让linux启动更快的方法相关推荐

  1. 电脑卡在正在启动windows界面_让 Linux 启动更快

    进行 Linux 内核与固件开发的时候,往往需要多次的重启,会浪费大把的时间. 在所有我拥有或使用过的电脑中,启动最快的那台是 20 世纪 80 年代的电脑.在你把手从电源键移到键盘上的时候,BASI ...

  2. 让计算机启动更快的十五招

    嫌计算机启动太慢是每个计算机迷的共同心病,让计算机启动更快是大家的共同心愿,本人在使用计算机过程中总结了加快计算机启动速度的"十五式",与您分享. 一.bios的优化设置 在bio ...

  3. 简单三招让你的火狐狸启动更快

    简单三招让你的火狐狸启动更快[@more@]火狐狸是一款非常优秀的开源浏览器,但是有的用户说它的启动速度有点忙,下面就告诉你三招,让你的火狐狸快速启动. 第一招:修改about:config参数:打开 ...

  4. java启动参数xmm_更快的方法来测试xmm / ymm寄存器是否为零?

    实际上,现有方法不是"非常慢",而是合理的 . 当然每个单独的测试都有4个周期的延迟1,但是如果你想将结果放在通用寄存器中,你通常会为这个移动支付3个周期的延迟(例如, movms ...

  5. IntelliJ IDEA 2019.3 发布,启动更快,性能更好(新特性解读)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 原文地址:https://www.jetbrains.com/id ...

  6. Java 启动和停止界面_IntelliJ IDEA 2019.3 发布,启动更快,性能更好(新特性解读)...

    点击上方"小哈学Java",选择"星标" 回复"资源",领取全网最火的Java核心知识总结~ 2019.3 11 月 28 IntelliJ ...

  7. RAD Studio Delphi 10.4在Windows,Android,iOS,macOS和Linux上更快地可视化开发APP应用软件及新增功能详解

    RAD Studio 10.4的新增功能 RAD Studio 10.4提供了显着增强的高性能本机Windows支持,通过出色的快速代码完成功能提高了生产率,通过托管记录提高了代码速度,并在现代多核C ...

  8. 让Windows XP启动更快

    在生活中,很多人都抱怨自己的电脑太慢,用起来有点力不从心的感觉,你是否知道,其实只需几步简单的设置,你就可以让你的爱机真正奔腾起来. 1.减少开机磁盘扫描等待时间: 开始→运行,键入:chkntfs ...

  9. linux中pushd和popd用法,使用Pushd和Popd命令在Linux中更快的导航目录

    本文介绍在Linux操作系统中更快的导航目录的方法:使用Pushd和Popd命令.我们通常使用cd /go/to/the/path来转到给定目录,使用cd ..返回一个父目录,并使用cd转到我们开始的 ...

最新文章

  1. 软件体系架构模式之三微内核体系架构
  2. HBase性能优化方法总结(4):读表操作
  3. 从内核层说清GetMessage , DispatchMessage
  4. SCGHR_存储过程(eSP_IDChangeStart)_政治面貌为什么不能正确更新
  5. UIButton设置圆角和边框及边框颜色
  6. 小白信用卡提额攻略,2年轻松提额20万!
  7. javaweb html5离线存储配置,JavaWeb 知识补充
  8. 在死循环中使用Scanner获得键盘输入
  9. python3读取本地_Python3 获取本机 IP
  10. CSS揭秘(四)视觉效果
  11. 适用于Mac的WinX HD视频转换器:视频转换教程
  12. stuxnet震网病毒科普
  13. ps色彩范围调暗图片局部
  14. 使用JAXB实现JAVA对象和XML字符串的互相转换
  15. excel联系导入到手机通讯录(小米手机)
  16. gcc cross compiler 问题
  17. U盘安装ubuntu系统
  18. 自研数据分析工具——yandas系列一:分析泰坦尼克号沉船事件中的乘客信息表
  19. 什么是响应式设计?如何实现?
  20. STM32中的程序在RAM还是FLASH里运行?

热门文章

  1. Salesforce Einstein承诺提供“开箱即用”的人工智能应用程序
  2. linux下kerberos教程
  3. apache与tomcat连接
  4. linux 下 将 shell script 与 一个桌面图标联系在一起 (2)
  5. 【leetcode】486. Predict the Winner
  6. SRE工程师到底是做什么的?
  7. [AsyncHandle]什么引发了ObjectDisposedException?
  8. No Database Selected
  9. Eclipse和PyDev搭建完美Python开发环境(Windows篇)(转)
  10. HDUOJ------Worm