(1)首先是对Linux启动过程的跟踪和分析,生成详细的启动时间报告。 较为简单可行的方式是通过PrintkTime功能为启动过程的所有内核信息增加时间戳,便于汇总分析。PrintkTime最早为CELF所提供的一个内核补丁,在后来的Kernel 2。

6。11版本中正式纳入标准内核。所以大家可能在新版本的内核中直接启用该功能。如果你的Linux内核因为某些原因不能更新为2。6。11之后的版本,那么可以参考CELF提供的方法修改或直接下载它们提供的补丁:http://tree。celinuxforum。

org/CelfPubWiki/PrintkTimes 开启PrintkTime功能的方法很简单,只需在内核启动参数中增加“time”即可。当然,你也可以选择在编译内核时直接指定“Kernel hacking”中的“Show timing information on printks”来强制每次启动均为内核信息增加时间戳。

这一种方式还有另一个好处:你可以得到内核在解析启动参数前所有信息的时间。因此,我选择后一种方式。 当完成上述配置后,重新启动Linux,然后通过以下命令将内核启动信息输出到文件: dmesg -s 131072 > ktime 然后利用一个脚本“show_delta”(位于Linux源码的scripts文件夹下)将上述输出的文件转换为时间增量显示格式: /usr/src/linux-x。

xx。xx/scripts/show_delta ktime > dtime 这样,你就得到了一份关于Linux启动时间消耗的详细报告。

(2)然后,我们就来通过这份报告,找出启动中相对耗时的过程。 必须明确一点:报告中的时间增量和内核信息之间没有必然的对应关系,真正的时间消耗必须从内核源码入手分析。

这一点对于稍微熟悉编程的朋友来说都不难理解,因为时间增量只是两次调用printk之间的时间差值。通常来说,内核启动过程中在完成一些耗时的任务,如创建hash索引、probe硬件设备等操作后会通过printk将结果打印出来,这种情况下,时间增量往往反映的是信息对应过程的耗时;但有些时候,内核是在调用printk输出信息后才开始相应的过程,那么报告中内核信息相应过程的时间消耗对应的是其下一行的时间增量;还有一些时候,时间消耗在了两次内核信息输出之间的某个不确定的时段,这样时间增量可能就完全无法通过内核信息反应出来了。

所以,为了准确判断真正的时间消耗,我们需要结合内核源码进行分析。必要的时候,例如上述第三种情形下,还得自己在源码中插入printk打印,以进一步确定实际的时间消耗过程。 以下是我上次裁减后Linux内核的启动分析: 内核启动总时间: 6。188s 关键的耗时部分: 1) 0。

652s - Timer,IRQ,Cache,Mem Pages等核心部分的初始化 2) 0。611s - 内核与RTC时钟同步 3) 0。328s - 计算Calibrating Delay(4个CPU核心的总消耗) 4) 0。144s - 校准APIC时钟 5) 0。

312s - 校准Migration Cost 6) 3。520s - Intel E1000网卡初始化 下面,将针对上述各部分进行逐一分析和化解。

全部

Linux系统启动需要多长时间,Linux系统启动时间的极限优化是怎样进行的?相关推荐

  1. linux hz是多长时间,linux的HZ, Tick, Jiffies

    Linux核心几个重要跟时间有关的名词或变数,底下将介绍HZ.tick与jiffies. (1)HZ Linux核心每隔固定周期会发出timer interrupt (IRQ 0),HZ是用来定义每一 ...

  2. Linux系统启动流程(4)制作自定义linux之一

    Linux系统启动流程(4)制作自定义linux之一 平时使用的服务器类型的linux系统一般都会装载各种软件与服务,而在某些情况下,并不能一直直接使用公司管理的系统,一是可能会出现故障,二是在处理一 ...

  3. Linux下如何删除长时间不使用的旧文件?

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.高颜值在线绘图和分析.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流 ...

  4. linux系统调整屏幕亮的时间,Linux系统的电脑上调整屏幕亮度的方法

    先来看一个通用方法注意:以下操作均不需要sudo管理员权限,用当前用户操作即可. 1.打开一个终端,查看本机最大亮度值. 输入命令: 复制代码代码如下: cat /sys/class/backligh ...

  5. linux系统启动盘怎么制作工具,windows系统制作linux启动盘工具介绍

    Linux发行版排行榜: http://iso.linuxquestions.org/ http://distrowatch.com/dwres.php?resource=major&lang ...

  6. linux shell 判断文件 修改时间和系统时间差

    代码如下: #!/bin/bashtimestamp=`date +%s` filepath=/root/yuhui/ta-2016030307.log if [ -f $filepath ]; th ...

  7. Linux执行yum不显示时间,Linux停的yum命令详解(朝花夕拾)

    yum是干什么的使用redhat,fedora的linuxer肯定都为rpm著名的dependency hell而头疼(这也是所有基于rpm发行版都有的问题).foo is needed by bar ...

  8. linux内核纳秒精度时间,Linux时钟精度:毫秒?微妙?纳秒?

    最近被内核时钟精度弄的很是郁闷.具体情况如下: 扫盲:1秒=1000毫秒=1000000微妙=1000000000纳秒 首先:linux有一个很重要的概念--节拍,它的单位是(次/秒).2.6内核这个 ...

  9. Linux记起始和结束时间,Linux历史命令的记住执行时间

    本文主要说明平台是Red Hat / CentOS系列系统. 当安装完一台Linux后,我们可以把下列事情当作第一件要做的事: 让history记录执行命令的时间: 上代码 export HISTTI ...

  10. linux主备dns切换时间,linux实现DNS轮询实现负载平衡

    导读 DNS 轮询机制会受到多方面的影响,如:A记录的TTL时间长短的影响:别的 DNS 服务器 Cache 的影响:windows 客户端也有一个DNS Cache.这些都会影响 DNS 轮询的效果 ...

最新文章

  1. IBM Rational DOORS通过DXL进行二次开发初试(2)
  2. JS中字符串的相关操作
  3. Windows Serer 2003 配置手册 – 创建Active Dictionary域
  4. Java代码质量监控工具Sonar安装
  5. SAP成都研究院2018年年会之前的技术讲座
  6. java list的作用_集合框架(List集合的特有功能概述和测试)
  7. Vue移动端项目——Vant 移动端 REM 适配
  8. pycharm无法安装第三方的包(AttributeError: module 'pip' has no attribute 'main')
  9. linux下Led的设备驱动程序实验总结,Linux让LED灯闪起来
  10. JSP的MVC模式(JavaBean、Servlet、JSP)
  11. 最简单的基于FFmpeg的内存读写的例子:内存播放器
  12. putty怎么更改为中文_Putty怎么样设置显示中文 设置Putty显示中文
  13. 盘点:光通信的五个发展趋势
  14. PS去掉图片中的文字标识
  15. 电容滤波器和电感滤波器详解(工作原理,设计详解,典型电路图)
  16. vim 常用命令 挺全的
  17. 怎么用微信打开链接才不会提示已停止访问网页
  18. 组合学:使用10个数字与52个字母生成1477万个不重复的4位串码V3完结版本
  19. QPE(量子相位估计)
  20. python中取整求余的计算步骤

热门文章

  1. JasperServer 图表中文乱码解决
  2. MyEclipse Hibernate反向工程生成实体类
  3. mysql各存储引擎介绍表格_十六、MySQL基础系列笔记之数据表存储引擎的介绍
  4. 共享文件夹只能连接20人_英语正能量 | 快乐可以与人共享,苦难却只能自己坚强...
  5. go处理get、post请求返回的body数据
  6. win10系统下安装Consul
  7. Tp nginx.conf 配置(Linux)
  8. PHP数组实现菜单无限极分类
  9. 六石管理学:使用排除法解决问题
  10. WIN10网络共享文件夹实战