Android bootchart(二)

这篇文章讲一下MTK8127开机启动的时间

MTK8127发布版本开机时间大约在20秒左右,如果发现开机时间变长,大部分是因为加上了客户订制的东西,代码累赘太多了。

1、下面看一下MTK开机花时间的是哪些动作

1-1 kernel初始化 

1-2 加载NAND分区 

1-3 启动Android

   1-3-1 加载类 在zygote里面加了 时间发现 这个时间确实很长

   1-3-2 包扫描

   1-3-3 应用扫描

如何查看启动时间的相关时间点呢?看下面

root@mid713l_lp_lvds:/ # cat /proc/bootprof                                    
----------------------------------------
0        BOOT PROF (unit:msec)
----------------------------------------
      4098        : preloader
       722        : lk
      1829        : lk->Kernel
----------------------------------------
      8743.419000 : Kernel_init_done
      8758.075154 : SElinux start.
     14921.341308 : SElinux end.
     15750.858462 : INIT: on init start
     16147.198077 : INIT:NAND:Mount_START
     32627.899693 : INIT:NAND:Mount_END
     32630.724232 : INIT:PROTECT:fat start
     32733.226540 : INIT:PROTECT:fat end
     32736.114693 : INIT:PROTECT_RAW_DISK:Mount_START
     33582.732924 : INIT:PROTECT_RAW_DISK:Mount_END
     34489.614386 : INIT: eng build setting
     38913.817386 : BOOT_Animation:START
     57958.511387 : Zygote:Preload Start
     61800.738080 : Zygote:Preload 2774 classes in 3827ms
     62764.249541 : Zygote:Preload 274 obtain resources in 941ms
     62800.117541 : Zygote:Preload 31 resources in 35ms
     62890.361695 : Zygote:Preload End
     63355.167926 : Android:SysServerInit_START
     64077.987388 : Android:PackageManagerService_Start
     64640.584772 : Android:PMS_scan_START
     70069.473157 : Android:PMS_scan_done:/custom/framework
     70141.781234 : Android:PMS_scan_done:/system/framework
     71685.662234 : Android:PMS_scan_done:/system/priv-app
     75316.111234 : Android:PMS_scan_done:/system/app
     75327.165004 : Android:PMS_scan_done:/system/vendor/app
     75328.890158 : Android:PMS_scan_done:/system/vendor/operator/app
     75330.559850 : Android:PMS_scan_done:/custom/app
     75337.836927 : Android:PMS_scan_data_start
     75418.824465 : Android:PMS_scan_data_done:/data/app
     75420.457542 : Android:PMS_scan_data_done:/data/app-private
     75422.520927 : Android:PMS_scan_END
     75840.712234 : Android:PMS_READY
     80126.832927 : AP_Init:[service]:[com.android.systemui]:[com.android.keyguard/.KeyguardService]:pid:809
     82539.565158 : AP_Init:[service]:[com.mediatek.security]:[com.mediatek.security/.service.PermControlService]:pid:851
     83699.413696 : AP_Init:[content provider]:[android.process.acore]:[com.android.providers.contacts/.ContactsProvider2]:pid:920
     85690.594004 : AP_Init:[service]:[com.google.android.inputmethod.latin]:[com.google.android.inputmethod.latin/com.android.inputmethod.latin.La
     87394.339466 : AP_Init:[broadcast]:[com.google.android.gms]:[com.google.android.gms/com.google.android.location.internal.NlpNetworkProviderSet
     91038.825466 : AP_Init:[added application]:[com.android.phone]:[com.android.phone]:pid:990:(PersistAP)
     91111.352389 : AP_Init:[added application]:[com.mediatek.voicecommand]:[com.mediatek.voicecommand]:pid:1003:(PersistAP)
     91179.826158 : AP_Init:[added application]:[com.mediatek.bluetooth]:[com.mediatek.bluetooth]:pid:1018:(PersistAP)
     91248.128928 : AP_Init:[added application]:[com.mediatek.dongle]:[com.mediatek.dongle]:pid:1036:(PersistAP)
     91372.823851 : AP_Init:[activity]:[com.android.launcher3]:[com.android.launcher3/.Launcher]:pid:1052
     91390.517158 : Android:SysServerInit_END
     91448.375543 : AP_Init:[service]:[com.android.printspooler]:[com.android.printspooler/.PrintSpoolerService]:pid:1067
     97597.181851 : AP_Init:[content provider]:[android.process.media]:[com.android.providers.downloads/.DownloadProvider]:pid:1100
     97846.665697 : AP_Init:[content provider]:[com.google.process.gapps]:[com.google.android.gsf/.gservices.GservicesProvider]:pid:1119
    103043.537698 : AP_Init:[broadcast]:[com.google.process.location]:[com.google.android.gms/com.google.android.location.network.LocationProviderC
    108608.975006 : BOOT_Animation:END




2、再来看一下 各个阶段的时间 可以通过平板上显示的图标看出来

     16147.198077 : INIT:NAND:Mount_START
     32627.899693 : INIT:NAND:Mount_END

从这个日志看 NAND 挂载花了16秒多 这个时间肯定要优化一下,要不然开机时间消耗太大

3、从日志分析时间


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

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

相关文章

Android Camera框架

总体介绍 Android Camera 框架从整体上看是一个 client/service 的架构, 有两个进程: client 进程,可以看成是 AP 端,主要包括 JAVA 代码与一些 native c/c++代码; service 进 程,属于服务端,是 native c/c++代码,主要负责和 linux kernel 中的 camera driver 交互,搜集 li…

【Pytorch神经网络实战案例】17 带W散度的WGAN-div模型生成Fashon-MNST模拟数据

1 WGAN-div 简介 W散度的损失函数GAN-dv模型使用了W散度来替换W距离的计算方式,将原有的真假样本采样操作换为基于分布层面的计算。 2 代码实现 在WGAN-gp的基础上稍加改动来实现,重写损失函数的实现。 2.1 代码实战:引入模块并载入样本-…

runtime如何实现weak属性

首先了解weak是一种非拥有关系,属性所值对象销毁时,属性值会情况(nil). Runtime对注册的类会进行布局,对于weak对象会放入hash表中,用weak指向的内存地址作为key,当对象引用计数器为0时会dealloc,假如weak指向的对象内存地址为a,那么就会以a为键,在这个weak表中搜索,找到以a为键…

计算机地址分配

1、计算机寻址 在linux下可以通过查看proc/ioport来看他们的地址段范围 weiqifa@weiqifa-Inspiron-3847:~/weiqifa/new_tm100/tm100$ cat /proc/ioports 0000-0cf7 : PCI Bus 0000:000000-001f : dma10020-0021 : pic10040-0043 : timer

【Pytorch神经网络理论篇】 24 神经网络中散度的应用:F散度+f-GAN的实现+互信息神经估计+GAN模型训练技巧

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

angularjs控制器之间的数据共享与通信

1、可以写一个service服务,从而达到数据和代码的共享; var appangular.module(app,[]);app.service(ObjectService, [ObjectService]); function ObjectService() {var list {};return {get: function(id){return list[id];},set: function(id, v){list[id] v;}} …

【Pytorch神经网络实战案例】18 最大化深度互信信息模型DIM实现搜索最相关与最不相关的图片

图片搜索器分为图片的特征提取和匹配两部分,其中图片的特征提取是关键。将使用一种基于无监督模型的提取特征的方法实现特征提取,即最大化深度互信息(DeepInfoMax,DIM)方法。 1 最大深度互信信息模型DIM简介 在DIM模型…

linux tar 解压命令总结

把常用的tar解压命令总结下,当作备忘: tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一…

经典c语言题

1. 用预处理指令#define 声明一个常数&#xff0c;用以表明1年中有多少秒&#xff08;忽略闰年问题&#xff09; #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 写一个“标准”宏MIN&#xff0c;这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) < (B) ?…

【Pytorch神经网络实战案例】19 神经网络实现估计互信息的功能

1 案例说明&#xff08;实现MINE正方法的功能&#xff09; 定义两组具有不同分布的模拟数据&#xff0c;使用神经网络的MINE的方法计算两个数据分布之间的互信息 2 代码编写 2.1 代码实战&#xff1a;准备样本数据 import torch import torch.nn as nn import torch.nn.fun…

当前进程(Linux Devices Driver)

尽管内核模块不像应用程序一样顺序执行,内核做的大部分动作是代表一个特定进程的,内核代码可以引用当前进程,通过存取全局项current,它在asm/current.h中定义,它产生一个指针指向结构task_struct,在linux/sched.h定义,current指针指向当前在运行的进程,在一个系统调用执行…

爬虫实战学习笔记_6 网络请求request模块:基本请求方式+设置请求头+获取cookies+模拟登陆+会话请求+验证请求+上传文件+超时异常

1 requests requests是Python中实现HTTP请求的一种方式&#xff0c;requests是第三方模块&#xff0c;该模块在实现HTTP请求时要比urlib、urllib3模块简化很多&#xff0c;操作更加人性化。 2 基本请求方式 由于requests模块为第三方模块&#xff0c;所以在使用requests模块时…

201521123044 《Java程序设计》第01周学习总结

1.本章学习总结 你对于本章知识的学习总结 1.了解了Java的发展史。 2.学习了什么是JVM,区分JRE与JDK,下载JDK。 3.从C语言的.c 到C的 .cpp再到Java的.java&#xff0c;每种语言编译程序各有不同&#xff0c;却有相似之处。 2. 书面作业 **Q1.为什么java程序可以跨平台运行&…

爬虫实战学习笔记_7 【实战】模拟下载页面视频(模板)

import requests # 导入requests模块 import re # 导入re模块 import os # 导入系统os模块# 实现发送网络请求&#xff0c;返回响应结果 def send_request(url,headers):response requests.get(urlurl,headersheaders) # 发送网络请求if response.st…

create_proc_read_entry中函数的说名

原型 &#xff1a;struct proc_dir_entry *create_proc_read_entry (const char *name, mode_t mode, struct proc_dir_entry *base, read_proc_t *read_proc, void *data);说明 &#xff1a;name : 要创建的文件名&#xff1b;mode : 文件掩码&#xff0c;为 0 则按照系统默认…

将一个java工程导入到myeclipse应该注意的地方

[原文]http://www.cnblogs.com/ht2411/articles/5471130.html 1. 最好新建一个myeclipse工程&#xff0c;然后从从文件系统导入该工程文件。 原因&#xff1a;很多项目可能是eclipse创建的&#xff0c;或者myeclipse的版本不一致&#xff0c;这样可能导致很多奇怪的现象&#x…

【Pytorch神经网络理论篇】 25 基于谱域图神经网络GNN:基础知识+GNN功能+矩阵基础+图卷积神经网络+拉普拉斯矩阵

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

strace调试(Linux Device Driver)

strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界&#xff0c;进程不能直接访问硬件设备&#xff0c;当进程需要访问硬件设备(比如读取磁盘文件&#xff0c;接收网络数据等等)时&#xff0c;必须由用户态模式切换至内核态模式&#xff0c;通 过系统调用访问硬…

【Pytorch神经网络基础理论篇】 07 线性回归 + 基础优化算法

同学你好&#xff01;本文章于2021年末编写&#xff0c;获得广泛的好评&#xff01; 故在2022年末对本系列进行填充与更新&#xff0c;欢迎大家订阅最新的专栏&#xff0c;获取基于Pytorch1.10版本的理论代码(2023版)实现&#xff0c; Pytorch深度学习理论篇(2023版)目录地址…

浅谈命令查询职责分离(CQRS)模式

在常用的三层架构中&#xff0c;通常都是通过数据访问层来修改或者查询数据&#xff0c;一般修改和查询使用的是相同的实体。在一些业务逻辑简单的系统中可能没有什么问题&#xff0c;但是随着系统逻辑变得复杂&#xff0c;用户增多&#xff0c;这种设计就会出现一些性能问题。…