- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux 启动优化的研究-刘中山
一种Linux启动综合优化技术的研究
近年,随着Linux的广泛使用以及高可信计算的兴起,Linux的启动时间越来越受到重视和关注,因为Linux的启动时间是提升系统可用性的关键点。而目前,现有的Linux内核启动优化研究主要是研究某个独立的优化技术对Linux启动时间的影响,并未研究多种优化技术综合后对Linux启动时间的影响。此外,也很少考虑内核裁剪技术对Linux内核启动速度的影响,因为该项技术一般被认为是一种Linux内核空间上的优化而非时间上的优化。为此,本文对多种Linux优化技术进行了综合,并研究了综合优化对Linux启动时间的影响。
Linux的启动过程一共分为:i. BIOS开机引导 ii. BootLoader的加载内核iii.内核解压缩 iv.内核初始化 v. 用户态下应用的加载及初始化(如启动rc脚本程序和应用)。已有的研究主要集中在:ii~v。
对于ii,主要的技术有:
削减Linux内核大小;
预读技术:将程序的代码块按照在磁盘上的逻辑地址进行有序排布,以减少磁头的移动开销;或者,在CPU执行代码时,利用DMA,从磁盘上读取数据。
对于iii,主要是利用XIP技术,避免内核解压缩的过程:即从Flash或ROM中存放未压缩的Linux内核映像,然后在Flash或ROM中直接执行初始化相关代码,这样免去初始化代码加载到内存的时间(需要指出的是,初始化代码的数据段仍然要放入内存中,并且仍需加载内核非初始化代码)。
对于iv,主要的技术有:
预链接技术,将动态连接过程中完成的工作如符号解析等提前完成,这样可以跳过动态连接的时间。
打包启动技术:]分析boot loader和Linux Kernel的启动时间,得出这样的结论:数据校验代码所耗时间、内核与ramdisk的解压缩时间是耗时最长的,所以,采用的方法是:将基于一个未压缩的内核的根文件系统进行打包,从而降低了启动时间。
减少计算校准延迟时间,比如,当Linux开机启动后,会计算loops_per_jiffy(该结果用来编写delay函数),其结果表明在x86平台下,能够节省19ms的时间,在arm平台下,能够节省192ms。
减少输出:禁止开机后的输出,以避免对I/O设备的操作。
Snapshot技术:即为了彻底避免初始化的开销,每次启动时,加载一个已经初始化完毕的内存镜像。这样,不但可以避免内核解压缩所需时间,还可避免内核初始化以及用户态初始化的时间。
对于v,主要的技术有:
削减启动应用的大小和数量。
并行启动技术,如:将应用安装在不同的磁盘上,然后通过并行I/O启动
对于启动阶段i~v中,最耗时的是iii、iv和v。以[10]的研究为例,其中,iii和iv总共占启动时间的26%,v占72.5%,而对于正常启动,难以通过省略或调整iv和v中的某些计算过程代码完成优化,如:省略探测硬件时间。幸运的是,目前随着硬件技术的提高,存储内核与应用的介质的访问速度比以前有了大幅提高,如:SSD(Solid Sate Disk),并且为了提高Linux系统的运行速度,很多系统会要求Linux内核与应用全部驻留在内存中。为此,目前的研究主要通过snapshot技术,即直接加载一个已经启动完毕的系统内存镜像,从而绕过内核解压缩和正常启动时所必做的初始化操作,如[11],以达到提高启动速度的目的。不过,这种方案的瓶颈在于:加载系统镜像的速度。即其难点主要在于:如何减少存储镜像在磁盘上的大小。
对于上述的优化技术,本文所采用的综合机制是:按照Linux的启动阶段将优化技术分类,然后按照启动顺序,分阶段综合,即主要采用如下顺序进行综合:
BootLoader加载内核
内核解压缩
内核初始化
用户态下应用的加载及初始化(如启动rc脚本程序和应用)
这样可以确保各个优化技术的独立性,去除了各项优化技术之间的干扰。此外,对于同一类的技术,本文仅选取具有普遍性并易于实现技术。如:本方案并未采用XIP技术,因为测试平台选取的是X86平台,而Linux内核3.5.4源码在X86上不支持XIP技术(arm平台上支持),此外预连接技术实际上已经部分地采用了减少内核解压缩过程的技术(因为不使用initial ramdisk,因而避免了initial ramdisk的解压过程)。
因此,本方案分所综合的技术共有如下五部分:
对Linux内核进行模块级裁剪
预链接,不动态加载内核模块
去除计算校准延时时间
禁止启动时的输出
基于函数调用图,对Linux内核大小进行进一步裁剪
其中i和v属于:对BootLoader加载内核阶段的优化,将v放在最后实现是因为v技术实际上是根据上层应用,对内核压缩。其效果和应用密切相关,因而放在最后。
由于Linux内核是跨平台的,所以针对不同的硬件和应用,L
文档评论(0)