Android中systrace配置及注意问题

Android中systrace配置及注意问题

systrace配置的官方文档地址如下:优化启动时间

Systrace

systrace 允许在启动期间收集内核和 Android 跟踪记录。systrace 的可视化可以帮助分析启动过程中的具体问题。(不过,如果要查看整个启动过程中的平均数量或累计数量,直接查看内核跟踪记录更为方便。)

如需在启动过程中启用 systrace,请执行以下操作:

  • frameworks/native/cmds/atrace/atrace.rc 中,更改以下行:

  write /sys/kernel/debug/tracing/tracing_on 0write /sys/kernel/tracing/tracing_on 0

改后:

  # write /sys/kernel/debug/tracing/tracing_on 0# write /sys/kernel/tracing/tracing_on 0

这将启用跟踪功能(默认处于停用状态)。

  • device.mk 文件中,添加以下行:

PRODUCT_PROPERTY_OVERRIDES +=    debug.atrace.tags.enableflags=802922
PRODUCT_PROPERTY_OVERRIDES +=    persist.traced.enable=0
  • 在设备 BoardConfig.mk 文件中,添加以下行:

BOARD_KERNEL_CMDLINE := ... trace_buf_size=64M trace_event=sched_wakeup,sched_switch,sched_blocked_reason,sched_cpu_hotplug

如果是详细的 I/O 分析,还要添加块以及 ext4 和 f2fs。

  • 在设备专属 init.rc 文件中,添加以下行:

on property:sys.boot_completed=1          // This stops tracing on boot complete
write /d/tracing/tracing_on 0
write /d/tracing/events/ext4/enable 0
write /d/tracing/events/f2fs/enable 0
write /d/tracing/events/block/enable 0
  • 在设备启动后,提取跟踪记录:

adb root && adb shell atrace --async_stop -z -c -o /data/local/tmp/boot_trace
adb pull /data/local/tmp/boot_trace
$ANDROID_BUILD_TOP/external/chromium-trace/systrace.py --from-file=boot_trace

注意:Chrome 无法处理过大的文件。请考虑使用 tailheadgrep 分割 boot_trace 文件,以获得必要的部分。由于事件过多,I/O 分析通常需要直接分析捕获的 boot_trace

使用systrace中需要注意的问题

注意问题1:

需要python 2.7版本,不能使用python3

注意问题2:

解决“ImportError: No module named win32con”和“ImportError: No module named six”

执行systrace解析命令式时报错

python chromium-trace/systrace.py --from-file=boot_trace

报错内容如下:

D:\Android\bootcompleted>python chromium-trace/systrace.py --from-file=boot_trace
Traceback (most recent call last):File "chromium-trace/systrace.py", line 48, in <module>from systrace import run_systraceFile "D:\Android\bootcompleted\chromium-trace\catapult\systrace\systrace\run_systrace.py", line 41, in <module>from devil import devil_envFile "D:\Android\bootcompleted\chromium-trace\catapult\systrace\systrace\..\..\devil\devil\devil_env.py", line 33, in <module>import dependency_manager  # pylint: disable=import-errorFile "D:\Android\bootcompleted\chromium-trace\catapult\dependency_manager\dependency_manager\__init__.py", line 29, in <module>from .archive_info import ArchiveInfoFile "D:\Android\bootcompleted\chromium-trace\catapult\dependency_manager\dependency_manager\archive_info.py", line 9, in <module>from dependency_manager import exceptionsFile "D:\Android\bootcompleted\chromium-trace\catapult\dependency_manager\dependency_manager\exceptions.py", line 5, in <module>from py_utils import cloud_storageFile "D:\Android\bootcompleted\chromium-trace\catapult\common\py_utils\py_utils\cloud_storage.py", line 22, in <module>from py_utils import lockFile "D:\Android\bootcompleted\chromium-trace\catapult\common\py_utils\py_utils\lock.py", line 20, in <module>import win32con
ImportError: No module named win32con

原因是python2.7版本缺少一些集成包导致,解决方法如下:

error: ImportError: No module named win32con

解决方法:python -m pip install pypiwin32

error: ImportError: No module named six

解决方法:python -m pip install six

过程中会报

WARNING: You are using pip version 19.2.3, however version 20.3.4 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

则根据提示一并执行如下命令即可

python -m pip install --upgrade pip

之后再执行

python chromium-trace/systrace.py --from-file=boot_trace

结果如下:

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

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

相关文章

2024.7.22 作业

1.将双向链表和循环链表自己实现一遍&#xff0c;至少要实现创建、增、删、改、查、销毁工作 循环链表 looplinklist.h #ifndef LOOPLINKLIST_H #define LOOPLINKLIST_H#include <myhead.h>typedef int datatype;typedef struct Node {union {int len;datatype data;}…

win10开启Linux子系统

打开win10开发人员模式&#xff0c;在设置–>更新和安全–>针对开发人员&#xff0c;中勾选开发人员模式。 然后在控制面板中勾选添加Linux子系统。依次进入控制面板–>程序–>启用或关闭windows功能&#xff0c;勾选适用于windows的linux的子系统&#xff0c;点击…

java利用二进制数字字段存储信息

前言 在做系统开发的时候&#xff0c;经常需要增加一些字段&#xff0c;但是增加字段的成本比较高&#xff0c;需要改动的地方比较多&#xff0c;所有一些状态标识可以使用已有的数字类型的扩展字段存储&#xff0c;减少改动成本。 原理 利用二进制的01标识类型信息&#xf…

Mac清理垃圾的软件有哪些 怎么清理电脑上的缓存文件和垃圾清理

如果你发现你的Mac运行速度开始慢如蜗牛&#xff0c;或者硬盘空间快速减少&#xff0c;那么可能是时候使用一款好的清理软件来“洗个澡”了。市场上有许多优秀的Mac清理软件&#xff0c;包括一些出色的国产软件和国际知名软件。那么&#xff0c;mac电脑清理垃圾的软件有哪些&am…

Java---后端文件上传详解

袁门才俊志高远&#xff0c; 震古烁今意决然。 风采翩翩才情显&#xff0c; 雄姿英发立世间。 目录 一&#xff0c;简单案例演示 二&#xff0c;服务器本地存储 三&#xff0c;配置单个文件上传大小限制 一&#xff0c;简单案例演示 首先简单编写一个前端网页&#xff1a; &l…

知识图谱:知识图谱概述(一)

一、知识图谱简介 知识图谱&#xff0c;是结构化的语义知识库&#xff0c;主要用于描述现实世界中的实体及其相互关系&#xff0c;由节点和边组成。节点可以是实体&#xff0c;如汽车、街道等&#xff0c;或是抽象的概念&#xff0c;如AI、疾病等。边可以是实体的属性&#xff…

基于FPGA的以太网设计(2)----以太网的硬件架构(MAC+PHY)

1、概述 以太网的电路架构一般由MAC、PHY、变压器、RJ45和传输介质组成,示意图如下所示: 需要注意的是,上图是一个简化了的模型,它描述的是两台主机之间的直接连接,但在实际应用中基本都是多台主机构成的局域网,它们之间并不直接相连,而是通过交换机Switch来进行…

【PPT把当前页输出为图片】及【PPT导出图片模糊】的解决方法(sci论文图片清晰度)

【PPT把当前页输出为图片】及【PPT导出图片模糊】的解决方法 内容一&#xff1a;ppt把当前页输出为图片&#xff1a;内容二&#xff1a;ppt导出图片模糊的解决方法&#xff1a;方法&#xff1a;步骤1&#xff1a;打开注册表编辑器步骤2&#xff1a;修改注册表&#xff1a; 该文…

Perl语言入门学习指南

Perl语言入门学习指南 原文链接 Perl&#xff08;Practical Extraction and Report Language&#xff09;是一种强大的编程语言&#xff0c;因其在文本处理和系统管理任务中的高效性而广受欢迎。本文将逐步深入介绍Perl&#xff0c;从环境准备到编写代码&#xff0c;探讨其实…

设计模式实战:图形编辑器的设计与实现

简介 本篇文章将介绍如何设计一个图形编辑器系统,系统包括图形对象的创建、组合、操作及撤销等功能。我们将通过这一项目,应用命令模式、组合模式和备忘录模式来解决具体的设计问题。 问题描述 设计一个图形编辑器系统,用户可以创建并操作图形对象,将多个图形对象组合成…

JavaScript导入导出excel

在JavaScript的浏览器环境下导入和导出Excel文件&#xff0c;主要可以通过一些库来帮助我们简化操作&#xff0c;比如SheetJS&#xff08;也称为xlsx库&#xff09;和FileSaver.js。以下是如何使用这些库来实现Excel的导入和导出的基本步骤&#xff1a; 导入Excel 导入Excel文…

万字长文之分库分表里无分库分表键如何查询【后端面试题 | 中间件 | 数据库 | MySQL | 分库分表 | 其他查询】

在很多业务里&#xff0c;分库分表键都是根据主要查询筛选出来的&#xff0c;那么不怎么重要的查询怎么解决呢&#xff1f; 比如电商场景下&#xff0c;订单都是按照买家ID来分库分表的&#xff0c;那么商家该怎么查找订单呢&#xff1f;或是买家找客服&#xff0c;客服要找到对…

【黄啊码】GPT的相关名词解释

GPT是一种基于互联网的、可用数据来训练的、文本生成的深度学习模型 GPT的核心技术是‌变换器&#xff08;Transformer&#xff09;&#xff0c;这是一种神经网络结构&#xff0c;可以有效地处理序列数据&#xff0c;比如文本、语音、图像等。GPT使用了大量的预训练数据&#…

vue中预览视频,word,pdf,xlsx

前提&#xff0c;下载依赖 #docx文档预览 npm install vue-office/docx#excel文档预览 npm install vue-office/excel#pdf文档预览 npm install vue-office/pdf 如果vue版本是vue2.6版本或者以下版本还需要安装vue/composition-api npm install vue/composition-api 1、预览…

vue keep-alive用法

<keep-alive> 是 Vue.js 中的一个内置组件&#xff0c;用于缓存不活动的组件实例&#xff0c;而不是销毁它们。当一个组件被切换出来时&#xff0c;它的 beforeDestroy 和 destroyed 生命周期钩子不会被调用&#xff0c;而是会被暂停&#xff0c;并在重新激活时恢复。 使…

深入浅出WebRTC—ULPFEC

FEC 通过在发送端添加额外的冗余信息&#xff0c;使接收端即使在部分数据包丢失的情况下也能恢复原始数据&#xff0c;从而减轻网络丢包的影响。在 WebRTC 中&#xff0c;FEC 主要有两种实现方式&#xff1a;ULPFEC 和 FlexFEC&#xff0c;FlexFEC 是 ULPFEC 的扩展和升级&…

websocket实现进度条

websocket实现进度条 做一个简易的websocket实现进度条的练习&#xff0c;效果如下&#xff1a; 前端vue3 <template><el-progress type"circle" :percentage"this.progressValue" :status"this.perstatus" /><el-button cli…

docker tomcat 404

HTTP 404状态码表示“Not Found”&#xff0c;即服务器无法找到请求的页面。 当用户尝试访问一个不存在的网页时&#xff0c;服务器会返回这个状态码。这个状态码是HTTP协议的一部分&#xff0c;用于告知客户端&#xff08;通常是浏览器&#xff09;服务器无法完成请求。404状…

黑马JavaWeb企业级开发(知识清单)02——HTML实现标题:样式(CSS引入、CSS选择器、span标签)和超链接

文章目录 前言一、标题样式1&#xff1a;新闻标题颜色1. CSS三种引入方式2. 颜色表示3. javacode实现 二、标题样式2&#xff1a;发布时间颜色1. < span >标签2. CSS选择器1&#xff09;元素&#xff08;标签&#xff09;选择器&#xff08;优先级最低&#xff09;2&…

IC秋招RTL代码合集

一 全加器和半加器 全加器 module full_adder1(input Ai, Bi, Ci,output So, Co);assign So Ai ^ Bi ^ Ci ;assign Co (Ai & Bi) | (Ci & (Ai | Bi)); endmodule module full_adder1(input Ai, Bi, Cioutput So, Co);assign {Co, So} Ai Bi Ci ; endm…