Linux下启动时间优化专题
1. 过往优化总结
陆陆续续在Linux进行启动时间优化,之前有两份文档,分别从内核和用户空间两个方向进行了优化。
《Android/Linux boot time分析优化》和《Busybox下Bootchart的使用》。
简单总结如下:
Kernel:基于dmesg,分析initcall_debug相关log,使用analyze_boot.py工具进行分析。
System:在支持Busybox的bootchartd的环境下(包括Android),使用pybootchartgui进行分析。对Ubuntu平台,直接使用systemd-analyze进行分析。
2. 还有哪些优化方法?还有哪些工具?
之前做的这些工作,似乎都就具体问题而进行。但是没有进行总结归纳,形成方法论来指导将来的工作。
2.1 预加载技术
预加载技术有preload、prelink、readahead;prealod相关帮助文档preload.pdf,作者官网http://behdad.org/,preload code。
preload作为守护进程,记录程序的使用统计信息,或者经常使用的文件;在计算机空闲的时候,将其加载到RAM中。这样在程序或文件被使用的时候运行速度就会非常快。
preload长和prelink配合使用。
2.2 Improving performance/Boot process
正如所有的优化从量化开始,Analyzing the boot process分析有systemd-analyze、systemd-bootchart、bootchart2(pybootchartgui)三种方法。
优化的步骤有:定制自己的Kernel;Initramfs启动;提前启动某些服务(systemctl enalbe xxxx);尽量少的Log输出;suspend到RAM而不是Disk。
2.3 Boot Time@elinux.org
Boot Time是用户开启设备的第一观感,涉及到很重要的用户体验。此WiKi基本上算是Boot Time的
参考资料:
http://processors.wiki.ti.com/index.php/Android_Boot_Time_Optimization
boot流程从BootROM->Bootloader->Kernel->Android的过程,以及如何度量每个阶段的时间。
http://blog.csdn.net/weiqifa0/article/details/48996033
如何修改init使能BOOTCHART,基于bootchart.tgz生成图表。在图表中查看每个进程的耗时,作出针对修改。
http://blog.csdn.net/springdia/article/details/8308914
介绍了Android用户空间启动优化。
http://elinux.org/Using_Bootchart_on_Android
Android下使用Bootchart的教程,需要修改init支持。
http://elinux.org/Android_Booting
介绍了Firmware、kernel、user space,重点分析了Android bootup流程,主要在用户空间。
里面的关于Kernel和Android User Space的优化点值得重视。
Bootchart的官网,介绍了Bootchart工具,以及Bootchart分支:Timechart、Bootchart-lite、ubootchart、EmBootchart、Busybox。
http://elinux.org/Improving_Android_Boot_Time_Outline
泛泛的介绍了Android中常用的测量启动时间的工具和方法。
Message loggers: grabserial, printk times, logcat.
Bootchart, strace, ftrace, method tracer…
https://www.toradex.com/blog/embedded-linux-boot-time-optimization
通过grabserial去获取log信息,分析bootloader、kernel、user space耗时。
https://wiki.archlinux.org/index.php/Improving_performance/Boot_process
基于systemd进行启动时间优化,一些方法值得参考。如果系统使用systemd,非常方便。
http://free-electrons.com/doc/training/boot-time/boot-time-slides.pdf
https://events.linuxfoundation.org/sites/events/files/slides/opdenacker-boot-time.pdf
http://tinylab.org/measure-and-draw-the-boot-up-time-of-linux-kernel/
使能printk.time=1和initcall_debug,然后获取dmesg.log信息。
使用bootgraph.pl、FlameGraph、gnuplot、histogram.sh进行分析。
Linux下启动时间优化专题的更多相关文章
- MongoDB在Linux下常用优化设置
MongoDB在Linux下常用优化设置 以下是一些MongoDB推荐的常用优化设置.在生产环境下选取合适的参数值,例如预读值和默认文件描述符数目等,会对系统性能有很大的影响. 1.关闭数据库文件的 ...
- linux下简洁优化部署tomcat应用
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本文是自己根据公司架构部署tomcat方法整理出来的文本 修 ...
- linux下jvm优化、tomcat调优
系统环境:jdk1.8,apache-tomcat-8.5.35 一.jvm优化 进入 bin/catalina.sh,修改JAVA_OPTS配置: JAVA_OPTS="-server - ...
- 2021-2-27:Linux 下如何优化 Java MMAP 写入
主要是调整 pdflush 相关参数. 在linux操作系统中,写操作是异步的,即写操作返回的时候数据并没有真正写到磁盘上,而是先写到了系统cache里,随后由pdflush内核线程将系统中的脏页写到 ...
- Linux下Tomcat优化
/etc/profileexport JAVA_OPTS="-server -showversion -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:Ma ...
- linux apache服务器优化建议整理(很实用)
转载:http://www.cnblogs.com/zhongbin/archive/2013/06/11/3131865.html 1.apache服务器的time_wait过多 fin_wait1 ...
- [Startup].Linux启动时间优化
转自:https://www.cnblogs.com/agui125/p/10070559.html 正文 回到顶部 1. 实践过程 我是对海思3559进行启动时间优化的.具体的操作可以参考<H ...
- 嵌入式LINUX启动时间优化
1. 实践过程 我是对海思3559进行启动时间优化的.具体的操作可以参考<Hi3559V100/Hi3556V100 快速启动优化指南>.软件上启动时间的优化一般是从三方面进行的:ubbo ...
- linux下TCP/IP及内核参数优化调优(转)
Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等. 如下配置是写在sysctl.con ...
随机推荐
- 程序设计之---单例模式VS静态方法
我们在设计程序经常会有这种需求 , 某个类里的方法能够全局访问. 在这种情况下有两种实现方案 : 1>单例模式(Singleton); 2>静态方法. 但是, 对于这两种实现方式 , 那种 ...
- Cocoa练习01:一个简单的Todo list程序
写一个简单的todo list程序,界面如下图: 在TextField区域输入文字,点击Add按钮会将文字显示在下面的TableView列表中.TableView列表有2列,第一列是文字的输入时间:第 ...
- rails中weill_paginate的paginate方法中不能使用额外参数的解决办法
我们知道高版本中的rails中的分页功能已经放在will_paginate这个gem中,我们在控制器方法中往往需要调用其paginate方法来实现分页数据集控制,举个例子:正常的情况我们想要每页显示1 ...
- app ionic1 微信 微博 分享功能的实现
微信分享 1.登录微信开放平台注册账户 2.创建一个移动应用 (app) 审核过后会有一个appid 之后安装插件的时候会用到 3.在这个应用上面填写 包名 和 签名 就可以了 包名和签名的 ...
- 关于Intent
TCP/IP 协议是Internet国际网络的基础,主要包括TCP,IP,UDP和ICMP等协议 要连上internet,操作系统必须安装TCP/IP协议,TCP/IP协议可以让不同类型,不同操作系统 ...
- 第四章:4.2MySQL 权限系统介绍
4.2.1 权限系统简介 MySQL 的权限系统在实现上比较简单,相关权限信息主要存储在几个被称为granttables 的系统表中,即: mysql.User,mysql.db,mysql.Host ...
- 星云链开发dapp,赚取100nas(价值近万)
前几天星云链主网正式上线,现在只要成功提交一个dapp即可获得100nas,1个nas 75元人民币左右.编写合约只要会javascript就可以写.活动持续两个月左右.下面简单介绍一下流程 首先注册 ...
- 基于Django的独立运行脚本开发
1.在Django框架下工作时间长了,会对Django的技术设施产生依赖,比如其方便的ORM,如果写基于Django的独立运行脚本,主要在脚本前面加上以下代码: import sys,os,djang ...
- CPA、CPS、CPM、CPT、CPC 是什么
http://www.a-edm.com/cpa.html 网络营销之所以越来越受到重视一个主要的原因就是因为“精准”.相比较传统媒体的陈旧广告形式,网络营销能为广告主带来更为确切的效果与回报,更有传 ...
- 【转】UNREFERENCED_PARAMETER的作用
UNREFERENCED_PARAMETER 的作用我们从 UNREFERENCED_PARAMETER 开始吧.这个宏在 winnt.h 中定义如下: #define UNREFERENCED_PA ...