Android/Linux boot time分析优化
如果需要优化boot time,就需要一个量化的工具来分析每个阶段的时间消耗。这种类型的优化特别适合使用基于timeline的图表,有着明显的时间顺序。要求不但能给出整个流程消耗的时间,还要能对流程进行细化,获得每个阶段的时间。先从总体上查看优化程度,然后逐个查看异常的阶段。
分析工具化之后,可以快速的迭代,获得测试结果的平均值和均方差,已验证修改的有效性和稳定性。
基于analyze_boot.py分析Android/Linux的kernel boot时间
1.修改HiKey的BoardConfig.mk文件,使能initcall_debug,增加dmesg buffer大小。
diff --git a/hikey/BoardConfig.mk b/hikey/BoardConfig.mk |
2.adb shell dmesg保存内核log到dmesg.txt中。
adb shell dmesg > dmesg.txt |
3.使用analyze_boot.py分析dmesg.txt,生成从kernel启动到启动用户空间init之间timeline图表。
./analyze_boot.py -dmesg dmesg.txt |
4.结果分析。
整个boot情况概况如下:
查看某一个细节的启动时间,如hisi_thermal_driver_init:
工具代码分析
analyze_boot.py:https://github.com/arnoldlu/suspendresume/blob/master/analyze_boot.py
基于bootchart分析Android boot time
bootchart是一个用于分析系统启动过程的可视化工具,包括数据收集和可视化两部分。
在Android中,数据收集功能集成到初始化命令init中了。bootchart的官方信息在:http://www.bootchart.org/
bootchart大致流程是在待测设备(Android等)收集数据(bootchart.tgz),然后使用bootchart工具分析,并生成SVG等可视化图表,可以使用Inkscape或者Web Browse打开SVG进行分析。
1.安装分析工具
sudo apt-get install bootchart |
2.准备Android bootchart功能
3.触发bootchart功能
4.收集测试数据
5.生成可视化图表
pybootchartgui
Using bootchart on Android:http://elinux.org/Using_Bootchart_on_Android
Ubuntu bootchart分析
Ubuntu从15.04切换到了systemd作为init启动。
systemd-analyze作为systemd的相关命令,用于分析系统启动性能。systemd-analyze还包含一些列子命令。
systemd-analyze time和systemd-analyze一样用于显示用户空间启动前内核启动时间和用户空间启动时间。
Startup finished in 4.331s (kernel) + 42.551s (userspace) = 46.883s |
systemd-analyze blame显示以时间从长到短的启动服务列表。
8.977s NetworkManager-wait-online.service ... |
systemd-analyze critical-chain显示最耗时服务单元。
The time after the unit is active or started is printed after the "@" character. The time the unit takes to start is printed after the "+" character. graphical.target @42.534s |
systemd-analyze plot > systemd.svg
systemd-analyze dot
systemd-analyze dump
systemd-analyze set-log-level
systemd-analyze set-log-target
systemd-analyze verify
/etc/systemd/bootchart.conf
/etc/default/grub
systemd-analyze
Android/Linux boot time分析优化的更多相关文章
- Android/Linux boot time优化
基于analyze_boot.py分析Android/Linux的kernel boot时间 1.修改HiKey的BoardConfig.mk文件,使能initcall_debug,增加dmesg b ...
- Android/Linux Thermal框架分析及其Governor对比
图表 1 Thermal框架 随着SoC性能的快速提升,功耗也极大提高,带来的负面影响是SoC的温度提高很快,甚至有可能造成物理损坏.同时功耗浪费也降低了电池寿命. 从上图可知,Thermal框架可以 ...
- MTK Android 源码目录分析
Android 源码目录分析 Android 4.0 |-- abi (application binary interface:应用二进制接口)|-- art (average retrieval ...
- Android(Linux)控制GPIO方法二
前文<Android(Linux)控制GPIO的方法及实时性分析>主要使用Linux shell命令控制GPIO,该方法可在调试过程中快速确定GPIO硬件是否有问题,即对应的GPIO是否受 ...
- Android四个多线程分析:MessageQueue实现
Android四个多线程分析:MessageQueue的实现 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 在前面两篇文章<Android多线 ...
- Android SDK自带调试优化工具
Android sdk中自带了一些分析内存,界面调优的非常实用的工具,这对于分析和调试我们的应用十分有帮助,由于我使用的是linux版本的sdk,所以就以linux版本的工具做一个介绍,这些工具的具体 ...
- Android(Linux)实时监控串口数据
之前在做WinCE车载方案时,曾做过一个小工具TraceMonitor,用于显示WinCE系统上应用程序的调试信息,特别是在实车调试时,用于监控和显示CAN盒与主机之间的串口数据.因为需要抢占市场先机 ...
- linux源码分析2
linux源码分析 这里使用的linux版本是4.8,x86体系. 这篇是 http://home.ustc.edu.cn/~boj/courses/linux_kernel/1_boot.html ...
- Android 中图片压缩分析(上)
作者: shawnzhao,QQ音乐技术团队一员 一.前言 在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种:其一是质量压缩,其二是下采样压缩. 前者是在不改变图片尺寸的情 ...
随机推荐
- 【极简】如何挑选合适的百度BCC,并安装宝塔控制面板
1.前期有百度云账号,登陆系统控制台,点击产品"云服务器BCC". 2.关闭绑定快照策略,选择购买弹性公网IP,如果选择不需要,服务器就没有对外的IP,只能在内网内使用,所以这里要 ...
- java 返回某一天的周日和现在这一周的周日
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import j ...
- awesomium_v1.6.6_sdk 百度云下载地址
awesomium的官网已经关闭很久了,所以找不到正规的下载地址. 而csdn上面的又收费.所以这里提供一个不收费的百度云的下载地址给大家. 不足就是不是1.7版本,所以对于某些有特殊用途的满足不了了 ...
- JHipster生成微服务架构的应用栈(四)- 网关微服务示例
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...
- python使用sax实现xml解析
之前在使用xml解析的时候,在网上搜了很多教程,最终没有能按照网上的教程实现需求. 所以呢,只好自己去看源码,在sax的__init__.py下看到这么一段代码: 1 def parse(source ...
- CMM/CMMI的基本概念
"CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM. 它是对于软件组织在定义.实施. ...
- Linux学习历程——Centos 7 cat命令
一.命令介绍 我们使用man cat命令,可以看到cat命令的用途是连接文件或标准输入并打印,简单来说cat命令是用来查看纯文本文件(通常为内容较少的文件),与重定向符号配合使用,可以实现创建文件与合 ...
- .svn文件夹特别大
一个项目通过svn管理,迭代开发一年之后,.svn目录达到20G或更大,对于SSD硬盘来说是非常占用空间的,经过我的尝试,可以使用tortoiseSVN自带的cleanup为文件夹瘦身. 操作方法: ...
- python-turtle 快给你的爷爷看看啥是 “小猪佩奇”
完整代码: #!/usr/bin/env python2 # coding=utf-8 import turtle t = turtle.Pen() t.pensize(4) t.hideturtle ...
- [Hive_add_4] Hive 命令行客户端 Beeline 的使用
0. 说明 Hive 命令行客户端 beeline 的使用,建立在启动 Hadoop 集群和启动 hiveserver2 的基础之上 1. 使用指南 在确保集群启动和 hiveserver2 启动的 ...