自学内容网 自学内容网

Android中systrace配置及注意问题

Android中systrace配置及注意问题

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

Systrace

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

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

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

  write /sys/kernel/debug/tracing/tracing_on 0
  write /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_systrace
  File "D:\Android\bootcompleted\chromium-trace\catapult\systrace\systrace\run_systrace.py", line 41, in <module>
    from devil import devil_env
  File "D:\Android\bootcompleted\chromium-trace\catapult\systrace\systrace\..\..\devil\devil\devil_env.py", line 33, in <module>
    import dependency_manager  # pylint: disable=import-error
  File "D:\Android\bootcompleted\chromium-trace\catapult\dependency_manager\dependency_manager\__init__.py", line 29, in <module>
    from .archive_info import ArchiveInfo
  File "D:\Android\bootcompleted\chromium-trace\catapult\dependency_manager\dependency_manager\archive_info.py", line 9, in <module>
    from dependency_manager import exceptions
  File "D:\Android\bootcompleted\chromium-trace\catapult\dependency_manager\dependency_manager\exceptions.py", line 5, in <module>
    from py_utils import cloud_storage
  File "D:\Android\bootcompleted\chromium-trace\catapult\common\py_utils\py_utils\cloud_storage.py", line 22, in <module>
    from py_utils import lock
  File "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

结果如下:


原文地址:https://blog.csdn.net/netwalk/article/details/140612759

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!