练习Sample跑起来 | 热点问题答疑第3期
孙鹏飞
该思维导图由 AI 生成,仅供参考
你好,我是孙鹏飞。又到了答疑的时间,今天我将围绕卡顿优化这个主题,和你探讨一下专栏第 6 期和补充篇的两个 Sample 的实现。
专栏第 6 期的 Sample 完全来自于 Facebook 的性能分析框架Profilo,主要功能是收集线上用户的 atrace 日志。关于 atrace 相信我们都比较熟悉了,平时经常使用的 systrace 工具就是封装了 atrace 命令来开启 ftrace 事件,并读取 ftrace 缓冲区生成可视化的 HTML 日志。这里多说一句,ftrace 是 Linux 下常用的内核跟踪调试工具,如果你不熟悉的话可以返回第 6 期文稿最后查看 ftrace 的介绍。Android 下的 atrace 扩展了一些自己使用的 categories 和 tag,这个 Sample 获取的就是通过 atrace 的同步事件。
Sample 的实现思路其实也很简单,有两种方案。
第一种方案:hook 掉 atrace 写日志时的一系列方法。以 Android 9.0 的代码为例写入 ftrace 日志的代码在trace-dev.cpp里,由于每个版本的代码有些区别,所以需要根据系统版本做一些区分。
第二种方案:也是 Sample 里所使用的方案,由于所有的 atrace event 写入都是通过/sys/kernel/debug/tracing/trace_marker,atrace 在初始化的时候会将该路径 fd 的值写入atrace_marker_fd全局变量中,我们可以通过 dlsym 轻易获取到这个 fd 的值。关于 trace_maker 这个文件我需要说明一下,这个文件涉及 ftrace 的一些内容,ftrace 原来是内核的事件 trace 工具,并且 ftrace 文档的开头已经写道
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了Android系统中的卡顿优化技术,重点围绕性能分析框架和线程监控展开讨论。作者介绍了利用性能分析框架收集atrace日志,并详细讨论了atrace的使用和实现思路。此外,文章提到了监控线程创建并打印出创建线程的Java方法,以及对线程监控中的一些技术细节进行了深入探讨。这些内容涉及到了性能优化和线程监控的技术细节,对于Android开发和性能优化领域的技术人员具有一定的参考价值。文章内容丰富,涵盖了实际操作和技术原理,对于想要深入了解卡顿优化技术的读者来说,是一篇值得阅读的文章。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》,新⼈⾸单¥59
《Android 开发高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- Kenneth请问这些知识是怎么获取到的呢?总感觉获取原声资料的渠道很受限制,感谢授人以鱼,更感谢授人以渔,感谢🙏
作者回复: 其实很多都是工作或者交流过程知道的,剩下的就是自己从点到面的学习了
2019-04-251 - blithe应用层开发都没接触过这些内容,大佬,你是从做什么开始接触到这些内容,并学习的2019-12-12
- eyeandroid通过hook atrace拿到的systrace,有cpu和其它进程的信息吗?2019-04-24
收起评论