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 预加载技术

预加载技术有preloadprelink、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的优化点值得重视。

http://elinux.org/Bootchart

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下启动时间优化专题的更多相关文章

  1. MongoDB在Linux下常用优化设置

    MongoDB在Linux下常用优化设置 以下是一些MongoDB推荐的常用优化设置.在生产环境下选取合适的参数值,例如预读值和默认文件描述符数目等,会对系统性能有很大的影响. 1.关闭数据库文件的 ...

  2. linux下简洁优化部署tomcat应用

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本文是自己根据公司架构部署tomcat方法整理出来的文本 修 ...

  3. linux下jvm优化、tomcat调优

    系统环境:jdk1.8,apache-tomcat-8.5.35 一.jvm优化 进入 bin/catalina.sh,修改JAVA_OPTS配置: JAVA_OPTS="-server - ...

  4. 2021-2-27:Linux 下如何优化 Java MMAP 写入

    主要是调整 pdflush 相关参数. 在linux操作系统中,写操作是异步的,即写操作返回的时候数据并没有真正写到磁盘上,而是先写到了系统cache里,随后由pdflush内核线程将系统中的脏页写到 ...

  5. Linux下Tomcat优化

    /etc/profileexport JAVA_OPTS="-server -showversion -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:Ma ...

  6. linux apache服务器优化建议整理(很实用)

    转载:http://www.cnblogs.com/zhongbin/archive/2013/06/11/3131865.html 1.apache服务器的time_wait过多 fin_wait1 ...

  7. [Startup].Linux启动时间优化

    转自:https://www.cnblogs.com/agui125/p/10070559.html 正文 回到顶部 1. 实践过程 我是对海思3559进行启动时间优化的.具体的操作可以参考<H ...

  8. 嵌入式LINUX启动时间优化

    1. 实践过程 我是对海思3559进行启动时间优化的.具体的操作可以参考<Hi3559V100/Hi3556V100 快速启动优化指南>.软件上启动时间的优化一般是从三方面进行的:ubbo ...

  9. linux下TCP/IP及内核参数优化调优(转)

    Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等. 如下配置是写在sysctl.con ...

随机推荐

  1. Unix - 文件中构成一个空洞的分析

    lseek函数显示地为一个打开文件设置偏移量,文件偏移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将加长该文件,并在文件中构成一个空洞,这一点是允许的.位于文件中但没有写过的字节都被读为 ...

  2. saiku应用的调试

    ubuntu下解压saiku包后使用: 运行.sh命令(.bat是windows命令).运行时注意权限.可以先chmod a+x *.sh 提示,catali?.sh出错. 这是tomcat的一个文件 ...

  3. C语言关键字static的绝妙用途

    为什么要说static妙,它确实是妙,在软件开发或者单片机开发过程中,大家总以为static就是一个静态变量,在变量类型的前面加上就自动清0了,还有就是加上static关键字的,不管是变量还是关键字, ...

  4. ubuntu下如何安装codeblocks集成开发环境

    codeblocks是一个十分优秀的C/C++开发IDE,虽然后起之秀codelite目前来看大有超越之势哦. 不过在ubuntu下安装codeblocks却比较麻烦,不像其他linux发行版,比如s ...

  5. LeetCode(47)-Reverse Bits

    题目: Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented ...

  6. CentOS6.4下安装Nginx1.12.2

    1.安装GCC安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装 yum install gcc-c++ 2.安装PCRE-devel PCR ...

  7. PyCharm命令行输入

    PyCharm命令行输入 写作原因 网上资料比较杂,版本较老,与现在的版本有区别,所以根据网上资料和自己亲手实验撰写此文. 设置方法 在菜单中按此路径设置: Run->Edit Configur ...

  8. j2EE经典面试题

    1. hibernate中离线查询去除重复项怎么加条件? dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 2. http协议及端口,sm ...

  9. 关于MVC的特性(AuthorizeAttribute)的一些理解

    许多 Web 应用程序要求在用户登录之后才授予其对受限制内容的访问权限. 在某些应用程序中,即使是登录的用户,也会限制他们可以查看的内容或可以编辑的字段. 要限制对 ASP.NET MVC 视图的访问 ...

  10. 利用truffle与智能合约进行交互

    先了解相关指令,再观看比较合适:http://truffle.tryblockchain.org/ 安装: 先完成上一条博客的安装,再来进行下面的操作:http://www.cnblogs.com/t ...