如何识别Android init 中的缓慢操作
Android 14 开机时间优化措施汇总-CSDN博客
- Android 14 开机时间优化措施-CSDN博客
- 根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客
- Android系统上常见的性能优化工具-CSDN博客
- Android上如何使用perfetto分析systrace-CSDN博客
- Android系统设置kernel log level的方法-CSDN博客
- Android14系统应用统一裁剪方案_android 开机 服务 裁剪-CSDN博客
- Android系统上Bootchart的使用_android bootchart-CSDN博客
- Android init.rc如何并行执行任务-CSDN博客
- Android init常用调试工具-CSDN博客
- 如何识别Android init 中的缓慢操作-CSDN博客
- Android init 中的wait_for_property指令-CSDN博客
- Android init.rc各阶段的定义和功能-CSDN博客
- Android init.rc的启动流程-CSDN博客
如何识别Android init 中的缓慢操作
在 Android 系统中,init
进程负责启动系统服务、配置属性和执行系统初始化任务。识别和优化 init
进程中的缓慢操作对于提高系统启动性能和整体响应性至关重要。本文档将详细介绍如何识别 init
中的缓慢操作,提供具体的方法和工具,以及如何解决这些问题。
1. 识别 init
中的缓慢操作
1.1 检查 init.
rc 文件
init.rc
文件是 init
进程读取的主要配置文件,它定义了服务、属性、启动脚本等。查看 init.rc
文件中的服务定义可以帮助识别潜在的缓慢操作。
-
文件位置:
/system/etc/init.rc
或/system/core/rootdir/init.rc
# 示例 init.rc
service myservice /system/bin/myserviceclass mainuser systemgroup systemoneshot
-
识别:检查
service
定义是否有oneshot
,start
、stop
命令的配置等。
1.2 查看 init
日志
init
进程的日志记录了服务启动、属性设置等信息。分析这些日志可以帮助识别哪些操作可能导致了系统启动的延迟。
adb logcat | grep init
-
查找:查看日志中是否有长时间运行的任务或错误信息。
08-05 08:00:00.000 200 200 I init : Starting service 'myservice'...
08-05 08:00:05.000 200 200 I init : Service 'myservice' has been started
1.3 使用 init
进程的调试工具
可以使用 init
的调试工具来分析性能瓶颈。
adb shell dumpsys init
-
查找:在输出中寻找服务启动的时间戳、属性设置等信息。
ActivityManager: Service myservice (PID 1234) running
2. 监控 init
进程的性能
2.1 使用 strace
工具
strace
工具可以监控 init
进程的系统调用和信号。
adb shell strace -p <init_pid> -tt
-
监控:查看
init
进程中的系统调用,识别耗时的操作。
[pid 1234] 08:00:00.000000 execve("/system/bin/myservice", ["myservice"], 0x7f000000) = 0
[pid 1234] 08:00:00.000100 read(0, "data\n", 4096) = 5
2.2 使用 perf 工具
perf
工具用于性能分析,查看 init
进程的 CPU 使用情况。
adb shell perf record -p <init_pid> -a
adb shell perf report
-
分析:查看性能瓶颈,识别消耗 CPU 的函数和操作。
Overhead Command Shared Object Symbol50.00% init /system/bin/init [k] syscall30.00% init /system/bin/init [k] kernel_task
2.3 使用 top
命令
top
命令可以动态监控系统的进程资源使用情况。
adb shell top -d 1
-
分析:查看
init
进程的 CPU 和内存使用情况。
PID PR CPU% S #THR VSS RSS PCY Name
1234 20 1.5 S 10 100M 50M fg init
3. init
中缓慢操作的常见原因与解决方法
3.1 缓慢的服务启动
原因:
-
服务启动时间过长,可能是因为初始化过程复杂或服务本身性能不佳。
解决方法:
-
优化服务代码:检查服务的初始化代码,减少启动时间。
-
调整
init.rc
配置:将服务标记为background
以使其在后台启动。
service myservice /system/bin/myserviceclass mainuser systemgroup systembackground
-
分离启动任务:将复杂的启动任务拆分成多个较小的任务。
3.2 长时间的属性设置
原因:
-
属性设置操作可能导致系统等待某些条件。
解决方法:
-
检查属性依赖:确保属性设置不会导致长时间的等待。
-
优化属性设置逻辑:改进属性设置的代码逻辑。
3.3 I/O 操作的延迟
原因:
-
频繁的磁盘读写操作会导致启动时间延迟。
解决方法:
-
减少 I/O 操作:优化磁盘访问代码,减少不必要的读写操作。
-
使用内存文件系统:对于频繁读写的文件,考虑使用
tmpfs
文件系统。
tmpfs /data/tmp tmpfs size=64M
4. 高级调试与优化工具
4.1 trace
工具
trace
工具可以提供详细的时间跟踪数据来帮助分析 init
进程的性能。
adb shell trace --start -c -p <init_pid>
# Perform the actions you want to trace
adb shell trace --stop
-
分析:查看
init
进程的详细时间数据。
4.2 systrace
工具
systrace
可以提供系统级别的性能分析。
adb shell atrace -b 4096 -t 10 -c -a init
-
分析:查看系统性能瓶颈。
5. 示例配置与优化
以下是一些优化 init.rc
文件的示例配置:
5.1 使用 background
启动服务
service slow_service /system/bin/slow_serviceclass mainuser systemgroup systembackground
5.2 设置启动优先级
service high_priority_service /system/bin/high_priority_serviceclass mainuser systemgroup systemoneshot# 服务优先启动on property:ro.hardware=high_prioritystart high_priority_service
通过这些方法,可以识别和优化 init
进程中的缓慢操作,从而提升 Android 系统的启动性能和响应速度。
参考链接
-
Android init 源代码文档
-
Android init.rc 配置文件
-
Android 性能分析工具 strace 使用方法
-
Android perf 工具的详细文档
-
Android top 命令参考
-
Android systrace 工具
相关文章:
如何识别Android init 中的缓慢操作
Android 14 开机时间优化措施汇总-CSDN博客 Android 14 开机时间优化措施-CSDN博客根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客Android系统上常见的性能优化工具-CSDN博客Android上如何使用perfetto分析systrace-CSDN博客Android系统设置kernel log level的…...
JVM:常用工具总结
文章目录 一、jstat工具 一、jstat工具 Jstat工具是JDK自带的一款监控工具,可以提供各种垃圾回收、类加载、编译信息等不同的数据。使用方法为:jstat -gc进程ID每次统计的时间间隔(毫秒)统计次数。 C代表Capacity容量,…...
二染色,CF 1594D - The Number of Imposters
目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1594D - The Number of Imposters 二、解题报告 1、思路分析 并查集&…...
Go语言并发编程-Channel通信_2
Channel通信 Channel概述 不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存 这是Go语言最核心的设计模式之一。 在很多主流的编程语言中,多个线程传递数据的方式一般都是共享内存,而Go语言中多Goroutine通信的主要方案是Cha…...
Richteck立锜科技电源管理芯片简介及器件选择指南
一、电源管理简介 电源管理组件的选择和应用本身的电源输入和输出条件是高度关联的。 输入电源是交流或直流?需求的输出电压比输入电压高或是低?负载电流多大?系统是否对噪讯非常敏感?也许系统需要的是恒流而不是稳压 (例如 LED…...
Socket 简介与 Java Socket 编程示例
Socket(套接字)是网络通信中的一个关键概念,它是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。 一、定义与概念 基本概念:Socket可以被视为网络环境中进程间通信的API(应用程序编程接口)&…...
跟着操作,解决iPhone怎么清理内存难题
在如今智能手机功能日益强大的时代,我们使用手机拍照、录制视频、下载应用、存储文件等操作都会占用手机内存。当内存空间不足时,手机运行会变得缓慢,甚至出现卡顿、闪退等现象。因此,定期清理iPhone内存是非常必要的。那么&#…...
React、Vue的password输入框组件,如何关闭自动填充?
有时候我们的表单使用了一个password组件,这时候每次打开新建,都会自动获取浏览器缓存的密码,但是它的上一个input输入框并不是用户名,这时候我们希望我们的表单,每次点开的时候密码是空的,让用户自动输入&…...
HTML+JS+CSS计算练习
可填 题目数量 数字范围 计算符号 题目做完后会弹窗提示正确率、用时 效果图 源代码在图片后面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…...
设计模式使用场景实现示例及优缺点(行为型模式——责任链模式)
在一个遥远的森林深处,有一个和谐的动物王国。这个王国里的动物们都有各自的职责,大家相互合作,共同维护着森林的和平与繁荣。 一天,森林里来了一只迷路的小兔子,她焦急地四处张望,不知道该怎么办。于是&am…...
CSS-1_0 CSS和文档流
文章目录 CSS和文档流如何证明这个流的存在呢?流和display番外:inline-block 碎碎念 CSS和文档流 首先什么叫流呢? 通常来说,我们最终看到的网页是HTML文档中定义的各个元素挨个输出的结果,这种一个接一个输出的方式…...
小程序图片下载保存方法,图片源文件保存!
引言 现在很多时候我们在观看到小程序中的图片的时候,想保存图片的原文件格式的话,很多小程序是禁止保存的,即使是让保存的话,很多小程序也会限制不让保存原文件,只让保存一些分辨率很低的,非常模糊的图片…...
新书速览|深入理解Hive:从基础到高阶:视频教学版
《深入理解Hive:从基础到高阶:视频教学版》 本书内容 《深入理解Hive:从基础到高阶:视频教学版》采用“理论实战”的形式编写,通过大量的实例,结合作者多年一线开发实战经验,全面地介绍Hive的使用方法。《深入理解Hiv…...
钡铼Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP、OPC UA分布式IO系统BL20X系列耦合器
BL20X系列耦合器是钡铼技术开发的一款用于分布式I/O系统的设备,专为工业环境下的高速数据传输和远程设备控制而设计,支持多种工业以太网协议,包括Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP和OPC UA等。如果您正在考虑部署BL20X系列耦合…...
Git分支合并以及分支部分合并 提交记录合并
Git分支合并,以及分支部分合并,提交记录合并 最近工作中用到git分支合并的场景,记录一下. 分支整体合并,合并所有记录 仅合并分支部分代码...
IDEA关联数据库
《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试(Debug) 第七章 …...
【Leetcode】14. 最长公共前缀
leetcode原地址:https://leetcode.cn/problems/longest-common-prefix 描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入:strs [“flower”,“flow”,“flight”…...
【BUG】已解决:zipfile.BadZipFile: File is not a zip file
已解决:zipfile.BadZipFile: File is not a zip file 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发…...
小白新手搭建个人网盘
小白新手搭建个人网盘 序云服务器ECS重置密码远程连接ECS实例 安装OwnCloud安装Apache服务PHP运行环境NAS挂载挂载验证操作体验 序 阿里云文件存储NAS(Apsara File Storage NAS)是一个可大规模共享访问,弹性扩展的分布式文件系统。本文主要是…...
NineData全面支持PostgreSQL可视化表结构设计
“PostgreSQL 是最像 Oracle 的开源关系型数据库“,也正因为如此,很多企业都青睐 PostgreSQL,拿它当成 Oracle 的替代品。所以毫无疑问,目前 PostgreSQL 在企业中非常常见。 对于直接接触 PostgreSQL 的开发人员而言,…...
从系统层面认识Linux及mysql中的多表查询
为什么计算机起始时间是1970年1月1日 为什么计算机起始时间是1970年1月1日-CSDN博客https://blog.csdn.net/csdn_kou/article/details/81535452 date "%Y-%m-%d %H:%M:%S" 查看日期 sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 在数据层面 CPU不…...
PCB(印制电路板)制造涉及的常规设备
印制电路板(PCB)的制造涉及多种设备和工艺。从设计、制作原型到批量生产,每个阶段都需要不同的专业设备。以下是一些在PCB制造过程中常见的设备: 1. 计算机辅助设计(CAD)软件: - 用于设计PC…...
《Windows API每日一练》10.3 公用对话框
Windows最初发行时的主要目标之一就是提倡一种标准化的用户界面。对于公用菜单 项来说,这一目标实现得很快。几乎所有的软件制造商都采用了Alt-File-Open组合来打开 文件。但是,真正用来打开文件的对话框却经常很不一样。 从Windows 3.1开始,…...
C++中的引用
在C中,我们要学习一个新的概念,叫做引用。引用不是对象,它只是给变量取一个别名。就好比,我们每个人总会右一下外号,或者是小名。当朋友或者家长不管是直接叫你的名字,还是叫你的小名,你都会答应…...
【自学安全防御】三、企业双机热备和带宽管理的综合实验
实验拓扑: 实验任务: 12,对现有网络进行改造升级,将当个防火墙组网改成双机热备的组网形式,做负载分担模式,游客区和DMZ区走FW3,生产区和办公区的流量走FW1 13,办公区上网用户限制流…...
无极与有极电容的区别
无极性电容与有极性电容:差异与应用探索 在电子元件的广阔世界里,电容器无疑是不可或缺的一部分。它们以储存电荷和调节电路中的电压与电流而闻名。然而,电容器并非一概而论,其中最为显著的区别之一就是无极性电容与有极性电容。…...
入坑树莓派(2)——树莓派4B与手机蓝牙通信
入坑树莓派(2)——树莓派4B与手机蓝牙通信 1、引言 在入坑树莓派(1)中已经搞掂了可视化问题。现在继续开展下一步,尝试与手机通信,一开始是想弄wifi连接的,但发现基于wifi的APP比较难弄,为了降低开发的难度,又因为树莓派板子自带蓝牙模块,所以直接选用蓝牙连接手机…...
RocketMQ单结点安装/Dashboard安装
目录 1.安装NameServer 2.安装Broker 3.使用自带工具测试数据发送 4.使用DashBoard进行查看 5.关闭相关设备 前置条件:两台虚拟机CentOS Linux release 7.5.1804(ps:当然也可以都部署在一台机器上) RocketMq属于天生集群。需要同时启动nameServer和Broker进行…...
【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第二篇 Linux系统编程篇-第三十四章 进程基础
i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...
使用LVS+NGinx+Netty实现数据接入
数据接入 链接参考文档 LVSKeepalived项目 车辆数据上收,TBox通过TCP协议连接到TSP平台 建立连接后进行数据上传。也可借由该连接实现远程控制等操作。 通过搭建 LV—NGinx—Netty实现高并发数据接入 LVS:四层负载均衡(位于内核层&#x…...
网站建设模板源代码/搜索广告优化
文章目录Q11.1 题目1.2 思路1.3 代码Q22.1 题目2.2 思路2.3 代码Q33.1 题目3.2 思路3.3 代码Q44.1 题目4.2 思路4.3 代码Q55.1 题目5.2 思路5.3 代码Q1 1.1 题目 利用递归方法求5!。 1.2 思路 递归公式:fnfn_1*4! 1.3 代码 def fact(j):sum 0if j 0:sum 1e…...
东莞手机网站建设/想建立自己的网站
文章目录 一、前言二、源码二、版本三、开始1、游戏规则2、艺术风格3、摄像机设置4、光线设置5、地面设置6、建筑物设置7、城堡设置8、怪物设置9、生成怪物10、子弹设置11、防御塔设置12、内容拓展一、前言 在本教程中,我们将创建一个小的三维塔防御游戏与一个完全独特的图形…...
微信支付网站开发/网络搜索引擎优化
集成云通信的企业信使短信平台,实现发短信功能,具体代码如下: package com.zrsc.sendsms; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import or…...
政府网站建设注意事项/济南seo网站排名优化工具
自古以来,人们就认识到了信用的重要性。司马迁在《史记季布栾布列传》中记载:得黄金百,不如得季布一诺。英国哲学家约翰穆勒认为:互相信任可以弥合人类生活中的每一个裂隙[1]。然而,或许正是因为信用的无所不在&#x…...
石家庄网站建设外包公司/seo网站关键词优化软件
你好!我是小编王裕雅,很高兴通过互联网认识你虚拟网络背后的是真实的人生,努力做事,认真做人!能帮到你是我最大的心愿ABM单创正在被大家逐步熟识,现在又出来一个VTN,那么VTN是什么?它…...
做亚马逊学英语有什么网站吗/网络营销中的seo是指
转载于:https://www.cnblogs.com/lr86/p/6656115.html...