应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

Linux启动时间优化实战,2。41秒启动应用

  劳动节,更个文吧,祝大家都劳有所获。
  今天看了一个关于启动优化的讲座,简单总结一下。
  本文的目标是尝试一些比较简单有效的方法,并不会覆盖所有的优化技巧。感兴趣的伙伴可以关注我视频号,后面准备用直播的方式和大家交流。
  目标系统
  硬件:
  BeagleBoneBlack(CortexA8)
  USB摄像头LCD
  软件:
  Linux5。1Buildrootrootfs
  FFmpeg,用于采集视频并解码到LCD。
  点击查看大图
  当前启动时间:
  从上电到LCD显示第一帧图像:9。45秒
  1、优化编译器
  ARMvsThumb2
  比较基于ARM或者Thumb2指令集编译出来的系统和应用。
  ARM:rootfs为3。79MB,ffmpeg为227KB。
  Thumb2:3。10MB(18),183KB(19)。
  性能方面:Thumb2的性能明显略有提升(约小于5)。
  虽然性能有所提升,但是我个人还是会选择ARM指令集。
  muslvsuClibc
  Buildroot里有3种C库可以选择:glibc、musl、uClibc,这里我们只比较后面2种比较小巧的库。
  musl:680KB(统计lib目录)。
  uClibc:570KB(16)。
  uClibc节省了110KB,我们选择uClibc。
  2、优化应用程序
  我们可以通过。configure对FFmpeg的功能组件进行选择。
  另外,还可以用strace和perf命令调试以优化FFmpeg的内部d代码。
  优化后的结果:
  文件系统:从16。11MB缩小到3。54MB(78)。
  程序的加载和运行时间:缩短150ms。
  整体启动时间:缩短350ms。
  在空间的优化很大,但是在启动时间上的优化很小,这是因为Linux运行程序时只加载程序的必要部分。
  3、优化Init和根文件系统
  思路:
  使用bootchartd分析系统启动并裁剪不必要的服务。
  将etcinit。d下的启动脚本合并为一个。
  不挂载proc和sys。
  裁剪BusyBox,文件系统越小,内核挂载可能会越快。
  将Init程序替换成我们的应用程序。
  静态编译应用程序。
  裁剪掉不常用的文件,找出长时间不访问的文件:findatime1000typef
  优化后的结果:
  文件系统:裁剪Busybox后,从3。54MB缩小到2。33MB(34)。
  启动时间:基本没改变,大概是因为文件系统本身就足够小了。
  使用initramfs作为rootfs:
  一般情况下,Linux系统会先挂载initramfs,initramfs很小且位于内存中,再由initramfs负责负载根文件系统。
  当我们将Buildrootrootfs裁剪得很小时,就可以考虑直接将其作为initramfs使用。
  这样有什么好处呢?
  initramfs可以和Kernel拼接在一起,Bootloader负责将Kernelinitramfs加载到内存中,内核不再需要访问磁盘。
  内核不再需要blockstorage和filesystem相关的功能,体积会变得更小,加载时间和初始化时间都会变小。
  注意,需要关闭initramfs的压缩(CONFIGINITRAMFSCOMPRESSIONNONE)。
  优化后的结果:
  即便禁用了CONFIGBLOCK和CONFIGMMC后,总启动时间仍多了20ms。这可能是因为Kernelinitramfs拼在一起之后,内核变大了许多,而内核镜像是需要解压,解压的时间增多了。
  4、优化内核
  评估方法:
  在启动参数里添加initcalldebug,能得到更多内核log:〔3。750000〕callingov2640i2cdriverinit0x00x101
  〔3。760000〕initcallov2640i2cdriverinit0x00x10returned0after544usecs
  〔3。760000〕callingat91sam9x5videoinit0x00x141
  〔3。760000〕at91sam9x5videof0030340。lcdheo1:videodeviceregistered0xe0d3e340,irq24
  〔3。770000〕initcallat91sam9x5videoinit0x00x14returned0after10388usecs
  〔3。770000〕callinggspcainit0x00x181
  〔3。770000〕gspcamain:v2。14。0registered
  〔3。770000〕initcallgspcainit0x00x18returned0after3966usecs
  。。。
  另外,可以用scriptsbootgraph。pl将dmesg的信息转换成图片:scriptsbootgraph。plboot。logboot。svg
  点击查看大图
  接下来,找出消耗时间最多的环节,进行优化。
  裁掉tracing
  在Kernelhacking里关闭Tracers相关的功能。
  启动时间:缩短550ms。
  内核大小:缩小217KB。
  裁掉一些用不上的硬件功能omap8250platformdriverinit(660ms)
  cpswdriverinit(112ms)
  am335xchildinit(82ms)
  。。。
  预设loopsperjiffy
  在每次启动时,内核都会校准delayloop的值,用于udelay函数。
  这会测量loopsperjiffy(lpj)的值。我们只需要启动一次内核,在log查找lpj值:Calibratingdelayloop。。。996。14BogoMIPS(lpj4980736)
  然后将lpj4980736填写到启动参数中,即可:Calibratingdelayloop(skipped)presetvalue。。996。14BogoMIPS(lpj4980736)
  大约缩短了82ms。
  禁用CONFIGSMP
  SMP的初始化很慢。它通常在默认配置中是启用的,即使是一个单核CPU。
  如果我们的平台是单核的,可以禁用SMP。
  关闭后,内核缩小:188KB(4。6),启动时间缩短126ms。
  禁用log
  启动参数里添加quiet,启动时间缩短577ms。
  禁用CONFIGPRINTK和CONFIGBUG后,内核缩小118KB(5。8)。
  禁用CONFIGKALLSYMS后,内核缩小107KB(5。7)。
  合计,启动时间缩短767ms。
  开启CONFIGEMBEDDED和CONFIGEXPERT
  这会让系统调用变得更精简,内核会变得没那么通用,但是能保持你的应用程序能运行就足够了。
  内核缩小51KB。
  启动时间缩短34ms。
  选择SLABmemoryallocators
  一般是SLAB、SLOB、SLUB三选一。
  SLAB:默认选择,最通用、最传统、最可靠。
  SLOB:更简洁,代码量更少,更节省空间,适合嵌入式系统,使能后,内核缩小5KB,但是启动时间增加1。43S!
  SLUB:更合适大型系统,使能后,启动时间增加2ms。
  因此,我们仍使用SLAB。
  内核压缩方式
  不同压缩方式的特点如下:
  实测效果:
  看起来,gzip和lzo表现更好。测试的效果应该是和CPU磁盘的性能相关的。
  内核编译参数
  使能CONFIGCCOPTIMIZEFORSIZE,该选项可能是用gccOs代替gccO2。
  点击查看大图
  注意,这只是在BeagleBoneBlackLinux5。1上的测试结果,不同平台之间有差异。
  禁用proc等伪文件系统
  要考虑应用的兼容性。
  ffmpeg依赖proc,所以只能关闭一些proc相关的选项:CONFIGPROCSYSCTL、CONFIGPROCPAGEMONITORCONFIGCONFIGFSFS,启动时间没有变化。
  关闭sysfs,启动时间缩短35ms。
  拼接DTB
  启用CONFIGARMAPPENDEDDTB:catarcharmbootzImagearcharmbootdtsam335xboneblacklcd4。dtbzImage
  setenvbootcmdfatloadmmc0:181000000zImage;bootz81000000
  启动时间缩短26ms。
  5、优化Bootloader
  这里我们采用最好的方案:使用UbootFalconmode。
  Falconmode只执行Uboot的第一阶段:SPL,然后跳过Stage2,执行加载Kernel。
  启动时间缩短250ms。
  总结
  到此,启动优化基本完成,最终效果如下:〔0。0000000。000000〕
  〔0。0007850。000785〕UBootSPL2019。01(Oct27201908:04:060100)
  〔0。0578220。057822〕TryingtobootfromMMC1
  〔0。3788780。321056〕fdtroot:FDTERRBADMAGIC
  〔0。7753060。396428〕Waitingfordevvideo0tobeready。。。
  〔1。9663671。191061〕Startingffmpeg
  。。。
  〔2。4122840。004277〕Firstframedecoded
  从上电到LCD显示第一帧图像,总时间为2。41秒。
  最有效果的步骤如下:
  点击查看大图
  仍值得优化的空间:
  系统花了1。2秒等待USB摄像头的枚举,这里是否有办法加速?
  是否可以关闭tty和终端登录?
  最后,关于优化启动时间,有一些原则可以遵循:
  请不要过早地进行优化。
  从一些影响面最小的点开始优化。
  从rootfs、kernel、bootloader自上而下进行优化。
  重点关注短板。
  感谢阅读,欢迎转发哦!

1953年,贵州女匪首被捕,参谋长询问主席意见,毛主席放了她程莲珍1952年左右,大湘西剿匪告捷,为祸一方的贵州匪患基本肃清,可就在大多匪首纷纷伏法之时,有一个人却始终不见踪迹,曾经人们都称其程大嫂,她便是大名鼎鼎的布依族女匪程莲……恭喜!火箭4连败获喜讯,114前锋重回航天城,浓眉恩师看好格北京时间11月2日,NBA常规赛已经开启第13天左右,其中全明星后卫詹姆斯哈登三双次数,追平伯德,升至历史第七的位置,排在他前面的是张伯伦。阿隆戈登表示,我会再次选择参加扣篮大……盘点新赛季CBA最令人失望的球员!五人上榜,一人拿顶薪场均22122赛季CBA第一阶段已经打了九轮比赛,在这九轮比赛中,球员们将自己休赛期的训练成果全然呈现,给观众球迷朋友们带来了一场又一场精彩的对决。但是,在职业体育联盟里,因为……5位超高人气的微胖女星,颜值高演技好,甩白幼瘦几条街虽然现在的审美都很偏向少女感和白幼瘦,但是我觉得微胖的女生也有属于自己的美!微胖的女生珠圆玉润、丰神绰约,柔美又丰满的感觉,女人味十足。当年林芳兵出演的杨贵妃,一颦一笑,……林氏三兄弟,林彪当了开国元帅,他的两个哥哥怎么样了古有一门词客三父子,千古大文豪;今有林氏三兄弟,肝胆照英肠。出自湖北黄冈的三兄弟,大哥林育英任职军委副主席;二弟林育南因反对左倾壮烈牺牲;弟弟林育容(林彪)是开国元帅。三……CBA球员势力榜,郭艾伦仅第3,广东双雄占据前2,山东1人位北京时间11月18日消息,CBA常规赛第一阶段已经落幕,第二阶段要等到12月25日才会开始,这期间40天的时间,各个俱乐部刚好可以好好调整一下。本赛季,CBA联盟和某平台联合推……拼音o读欧还是窝?辅导孩子写作业,是对父母的一大考验。有时候考验的是耐心,练就磨破嘴皮也绝不发火的神功;有时候考验的是智商,堂堂高材生也解不开小学数学题;有时……分崩离析的篮网本来想等到季后赛开始再更,不过篮网最近一波连败直接让人脑溢血啊。隔壁湖人虽然有威少这个喜剧演员但好歹是赢了一场。破网的球现在都不用看了,醒来就是一场大败。8连败之后这排名惨不忍……杨颖前夫离婚后罕见露面!与国乒陈梦相聚,两人都难掩失落的神情说起中国体育的传统强项时,除了跳水、举重和羽毛球等项目外,乒乓球堪称中国的国球,乒乓球在国际乒坛上取得了几乎战无不胜的辉煌战功,这离不开一代代国乒一姐的涌现。说到中国乒坛……女子冰球归化球员进球!却被批拖中国后腿,数百网友帮她回击2月3日,北京冬奥会女子冰球比赛开赛。时隔12年重登冬奥赛场的中国女子冰球队以13不敌劲旅捷克队。比赛中捷克队先进两球。第二节中国队的米勒的一次劲射洞穿对方球门,将比分扳……赵丽颖幸福到万家迎来新消息,男主出人意料,罗晋只是配角?早前凭借着《花千骨》,《楚乔传》等作品被观众熟知的赵丽颖,凭借着一部《谁是凶手》让观众真正见识到了她的演技水准。而赵丽颖也是为数不多凭借着几部作品就实现转型的演员,虽然如……三星GalaxyF62携6000mAh大电池报到,骁龙870今年上半年以及第三季度,虽然三星依旧坐稳了全球第一的宝座,但它的市场占有率与去年相比还是出现了大幅下降的趋势,所以为了保住全球第一的位置,接下来三星将会大力发展中端市场,从而加……
天龙八部全服第一名望称号,大佬都不一定有!太拉风了说起天龙江湖的养成玩法,最难养成的,老玩家们大概觉得那一定是九星龙纹。但其实不然,最难养成的,却是老玩家们都忽略的侠印。如今虽说侠印等级、绶印效果满级的不少,但是名……湖人近9战6败胜率跌破50,3位老将截止日前或遭交易北京时间1月28日,NBA湖人队客场挑战76人队,勒布朗詹姆斯缺阵,拉塞尔威斯布鲁克、安东尼戴维斯双超巨带队,可首节他们在进攻端就被76人队给打爆了,第一节76人队命中率比湖人……妈妈家里摆6个钟,按分钟监视7岁女儿生活被遥控的孩子,太窒息作者:郑鼎鼎爸妈研究所(ID:mamacn)原创首发01严格的控制背后藏着满溢的焦虑如果,妈妈在家里放了6个时钟为了安排你的生活,你会感觉如何?无……vivo预装OriginOSOcean新机曝光,直角中框设计近期,vivo的宣发重点一直放在了OriginOSOcean系统层面上。而在近日的宣发预热中,曝光了一款预装该系统的机型,引起了网友们的关注。从图片来看,该款vivo新机……江苏孩子判给前夫,临别时妻子跪地痛哭儿子,忘了妈妈吧!有妈的孩子是个宝,没妈的孩子像根草!夫妻之间一旦出现问题,受到伤害最大的就是孩子。宿迁乡下,有一个妈妈正在抱着孩子痛哭,身旁围着好多人。妈妈对孩子说:小宝,是妈妈没……华为Mate40Pro一夜跌至白菜价,麒麟9000曲面屏,还华为Mate40Pro从上市至今网友关注度一直居高不下,其究竟是有什么魔力能如此吸引网友的眼球呢?在外观与手感方面,华为Mate40Pro是自带光环的一款手机,其正面采用……小小说亲子鉴定人活在这个世界上,最醋心的事儿是什么?是没有钱花?是没有老婆?是没有孩子?还是在岳翰文看来,这些也许窝心,但都达不到最的状态。最让人醋心的,莫过于种下了龙种,……天坛公园第40届菊花展开幕今年重点打造沉浸式赏菊空间每到深秋,天坛公园都会成为市民游客赏菊的好去处。10月22日,天坛公园第40届菊花展正式开幕。北青北京头条记者了解到,本届天坛公园菊展主要包括祈年殿展区及科普园展区两个展区,共……格局大的人,说话做事都很特别格局决定成败,格局大的人往往不拘小节,不因一点事耿耿于怀,往往看得更远,眼界更广阔。有一般人达不到的心境。说话做事都对以后留有余地为今后做打算。做事往往深得人心让人信服,……NBA历史真正的统治者仅有2人?基德科比不在列,詹姆斯有瑕疵北京时间的4月25日,在NBA季后赛的赛场上,许多优秀团队在进行对决,其中令球迷们意想不到的是,本赛季排在联盟第一的太阳队,竟然会被鹈鹕队逼上绝路。如今太阳和鹈鹕2:2战平,两……这颗幸运行星,离毁灭只差亿点点最近,科学家发现一颗气态巨行星围绕着白矮星运行,这或许就是我们太阳系的未来:太阳爆炸成红巨星,并摧毁大部分内行星之后的情形。绘制:ADAMMAKARENKO,W。M。KECKO……有幸遇见最好的你,虽别离,初心难忘,想你永远是否,每个人心中都有一个忘不了的人,说不出他好在哪里,就是做不到将它忘记。是否,每个人心中都放着一个牵挂的人,哪怕相隔千里万里,一颗心也总会魂牵梦绕的把他想起。别人……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网