linux网站秒开技术,最牛技术 1秒启动Linux的窍门

news/2024/5/8 13:15:40/文章来源:https://blog.csdn.net/weixin_34996026/article/details/116985576

尽可能快的启动系统,对于自动化设备是非常重要的。系统能够在用户无法感知的时间内启动,也就意味着在不需要工作时,可以完全切断电源,而不是挂起进入休眠状态。本文基于Atmel AT91系列片上系统和NAND闪存,经过一系列的优化,将Linux系统启动时间,从最初的11秒,降低到最终的656毫秒。

1-1ZF10S20OQ.png

背景知识

系统从上电到完全启动,需要经过许多过程。一个简化的启动流程大概包含:

• 硬件重置

• 启动引导程序(bootloader)

• 操作系统初始化

• 应用程序执行

其中硬件非常关键,但是硬件一般难以更改。后续的优化,主要针对引导程序、Linux内核和应用程序展开。

引导程序优化

引导程序主要完成对CPU的基础设置,处理ARM标记(ATAGS,ARM TAGS)或设备树(device trees),切换存储管理单元(MMU,Memory Management Unit)等工作。

对于U-Boot,常用的优化方式有:

• 删除不不要的功能:如网络加载等,如果不需要,那么直接移除这些代码吧

• 关闭不需要的功能

• 关闭内核镜像验证

• 关闭引导程序输出

• 关闭启动延迟

将通用功能的引导程序修改成一个优化后的初始程序加载器(Initial Program Loader,IPL),对于U-Boot,可以通过SPL(Second Program Loader,第二阶段程序加载器)来实现。

内核优化

Linux内核被设计的非常灵活,可以针对需要的功能做各种配置优化。因此,优化内核对于系统启动速度是至关重要的。

首先,移除一切不要的驱动,尽可能的减少内核加载的内容,能够大大缩短系统启动时间。其次,还有很多内核选择可能需要进一步尝试,比如内核压缩方式,对于嵌入式系统来说,LZO压缩方式,通常会是一个不错的选择。最后,还可以通过定制一些启动参数,达到加快启动的目的。例如可以通过“lpj=”参数,预设每个循环需要的节拍数(loops per jiffy,lpj)的值,避免系统在启动时自动推算。这样在基于ARMv5的系统中,可以节省100ms以上的时间。

对于内核启动的优化,可以通过bootgraph.pl脚本(位于内核源码的 script/bootgraph.pl)来绘制内核启动耗时图表,用以分析启动最耗时的地方。这个脚本使用非常简单,直接将dmesg的输出作为其输入,即可生成svg图表:

dmesg perl scripts/bootgraph.pl > output.svg

生成的图表如下图:

1-1ZF10S15L43.png

图中每一个色段表示一个功能的初始化耗时。可以简单的关闭不需要的功能,或者针对功能进行特定的优化。

除了内核本身之外,内核所在的文件系统也对系统启动有着非常大的影响。对于使用闪存芯片作为存储的系统来说,UbiFS 是一个很好的选择。它能够容忍意外断电,有着出色的挂载速度,以确保系统快速启动。

应用程序优化

内核完成系统启动之后,接来下就是执行应用程序。对于应用程序的优化,主要有两部分,一部分是由应用程序来接管启动的INIT进程,另一部分是优化应用程序的链接方式。

标准的SystemV INIT程序,需要执行一堆启动脚本。对于嵌入式系统来说,大部分是没有意义的。另一部分(比如挂载文件系统),可以由应用程序自己来实现。然后,可以在内核启动参数中通过“init=”参数,将INIT进程直接指定为应用程序。

应用依赖的动态链接库,会按照以下顺序查找:

• LD_PRELOAD环境变量指定的路径(一般对应文件/etc/ld.so.preload);

• ELF .dynamic节中DT_RPATH入口指定的路径,若DT_RUNPATH入口不存在的话;

• 环境变量LD_LIBRARY_PATH指定的路径,但如果可执行文件有setuid/setgid权限,则忽略这个路径;编译时指定–library-path会覆盖这个路径;

• ELF .dynamic节中DT_RUNPATH入口指定的路径;

• ldconfig缓存中的路径(一般对应/etc/ld.so.cache文件),若编译时使用了-z nodeflib的链接选项,则此步跳过;

• /lib,然后/usr/lib路径,若使用了-z nodeflib链接选项,则此步亦跳过;

因此,尽可能的将应用程序依赖的动态链接库放到优先查找的路径,可以加快链接速度。对于交叉编译环境特别需要注意,主机上的动态链接库位置和目标系统上的位置可能不一致,这会增加应用程序执行时动态链接库的加载时间。

总结

基于上面提到的三个优化点,可以将系统的启动时间,从最初的11s降低到656ms(数据参考Jan Altenberg在都柏林举行的嵌入式Linux会议上的演讲稿)。从硬件到引导程序再到内核最后到应用程序,每个启动步骤都有自己可优化的地方,经过一些简单的优化,就可以减少系统的启动时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_837919.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不能访问特定网站

最近一直不能访问学校的网络,以为是学校的设置问题,今天和同事聊起才知道是自己的电脑配置出了问题。 回来打开网址,显示如下:打开“更多”,提示如下:按照上述提示,将“使用自动配置脚本”取消。…

zblog是PHP好还是,PJBlog和Z-blog哪个好,他们各自的优点是什么,做SEO哪个好

PJBlog和Z-blog哪个好,他们各自的优点是什么,做SEO哪个好zblog seo:PJBlog和Z-blog哪个好,他们各自的长处是什么,做SEO哪个好Z-blog最好,软件自身就SEO做的好,文章收录最快,这是我的亲自体会。。。其他答案:我个人觉得Z-Blog比较好…

5m独享网站服务器,独享5m云服务器

独享5m云服务器 内容精选换一换Linux云服务器常用的登录方式是SSH,对于密码登录方式创建的云服务器,如何保证登录安全性呢?本文以CentOS 7.6为例,对SSH登录进行安全加固。通过SSH密码方式远程登录云服务器。执行以下命令&#xff…

网站分析新手篇之访问量变化

产品经理一定要对数据敏感,从数据中要读出产品的趋势、变化的原因以及应对方法。网站访问量变化分析是网站分析的基础,我就简单说一下我对访问量变化的认识。明确指标定义在分析前我们必须首先弄清各个重要指标的详细定义。比如访问可能是以 Session 为单…

部分网站页面与Opera浏览器的兼容性状况很糟糕

下图是使用opera浏览器打开搜狐网首页的状态,可以看出部分广告位无法正常显示,浏览器已显示页面加载完毕,页面已经打开好几分钟,肯定不是网页载入速度慢的问题。下图是使用opera浏览器打开凤凰网首页的状态,页面乱七八…

本地网站搜索框From表单提交到百度后中文出现乱码问题的解决办法

最近在开发网站百度搜索框功能时,遇到了中文显示乱码的问题。即,在本地网站搜索框中输入中文关键词后,提交到百度后显示的是乱码,无法返回正确的结果。这可能是由于本地网站使用的是gb2312编码,但提交到百度后&#xf…

本地网站远程提交百度地图搜索后URL汉字编码问题的解决

近期在给自己的网站做综合搜索框时发现了一处BUG。本地表单中键入中文关键词后,提交给百度后,百度无法识别,变成了乱码,导致无法跳转到正确的地图搜索页面。经过用百度查阅资料,找到了解决问题的办法。在提交给百度之前…

判断网站统计中某个访客IP是否为百度蜘蛛的方法

近期在查看网站统计中经常看到某个来自北京的用户,51啦统计显示该用户一般每天凌晨到早晨这段时间访问网站,系统环境为ios,Safari浏览器。经过几天的观察,开始怀疑这个IP是否为普通用户。一般来讲,像51LA、CNZZ等统计工…

ASP网站ACCESS数据库转MS SQL以及远程连接MS SQL数据库的经验

自己的一个网站,之前一直使用ASPACCESS的组合。但access数据库的不足和弊端是显而易见的。近期,随着网站规模的扩大,对数据库的要求提高了,打算用MS SQL替换ACCESS数据库,上网查了一下,虽然有点小繁琐&…

移动网站性能优化:网页加载(转)

原文链接:http://caibaojian.com/mobile-optimization.html 由于移动设备存在的环境限制,如低带宽,高延迟,小内存,低处理器性能的等,迫使开发者不得不想办法通过优化前端页面的性能来满足用户的性能预期。在…

分享一个高清大图的网站

今天的分享是一个高清大图无版权的网站(不用翻墙) Search Latest - Free Images & Free stock photos - PxHere 网页链接

加速网站静态资源访问的方法

目录 一、采用CDN ​二、minified ​三、缓存机制 四、压缩 一、采用CDN 借助一张图来说明下,其实CDN的概念大致可以理解为在每个地区建立一个网络中心,这样做的好处就是用户访问速度加快了,不然的话就比如说你只有一台服务器在北京&…

千万级用户的大型网站,应该如何设计其高并发架构?

目录 (1)单块架构 (2)初步的高可用架构 (3)千万级用户量的压力预估 (4)服务器压力预估 (5)业务垂直拆分 (6)分布式缓存扛下读请…

网站发展历程九大阶段,及知识体系梳理

目录 网站发展历程 java入门 框架基础 阶段一:单体项目 阶段二:物理分离应用和数据库 阶段三:缓存化、静态化 阶段四:应用负载均衡,集群 阶段五:动静分离 阶段六:分布式缓存、缓存集群…

基于docker+reveal.js搭建一个属于自己的在线ppt网站

前言 最近热衷于Docker,由于这段时间使用Docker来折腾自己的服务器,越来越感觉这是一种极其被应该推广的技术,因此想在公司内部也做一次技术分享。当然,如果只是做的PPT,我就不写这文章了。既然把Docker说这么好&#…

seo是计算机专业毕业,本科计算机专业的他,在34岁时成为了银行行长

曾经看到过这样一段话,意思是说个人成长和人生选择过程中有这三个悖论:在你18岁对学科与知识一无所知的时候,就被要求选择自己的专业;在你22-25岁对商业世界运行规则毫无概念的时候,就被要求选择工作方向;在你25-28岁对自己和人际…

oss存html静态文件,Github改造成免费OSS对象存储,加速网站静态文件(js/css/字体文件)...

今天小白看到一篇文章,可以把github改成图床使用。小白测试了一下CDN居然还是国内的。那么咱们也可以把它改造成oss来加速网站使用。如果你是wordpress,那么可以查看以下文章:wordpress免插件实现静态资源CDN 。其他程序的话就得自己研究下怎…

支付宝电脑网站支付

选择电脑网站支付,填写信息,创建网站应用 下载demo  https://docs.open.alipay.com/54/106682/ 填写配置信息 同步和异步。 1.同步是给用户发的。用get 2.异步是被服务器发的。用post 当一个支付请求被发送到支付渠道方,支付渠道会很快返回…