练习Sample跑起来 | 热点问题答疑第2期
孙鹏飞
该思维导图由 AI 生成,仅供参考
为了让同学们可以进行更多的实践,专栏第 5 期 Sample 采用了让你自己实现部分功能的形式,希望可以让你把专栏里讲的原理可以真正用起来。
前面几期已经有同学通过 Pull request 提交了练习作业,这里要给每位参与练习、提交作业的同学点个赞。
在文中提到,“当发生 ANR 的时候,Android 系统会打印 CPU 相关的信息到日志中,使用的是ProcessCpuTracker.java”。ProcessCpuTracker 的实现主要依赖于 Linux 里的 /proc 伪文件系统(in-memory pseudo-file system),主要使用到了 /proc/stat、/proc/loadavg、/proc/[pid]/stat、/proc/[pid]/task 相关的文件来读取数据。在 Linux 中有很多程序都依赖 /proc 下的数据,比如 top、netstat、ifconfig 等,Android 里常用的 procrank、librank、procmem 等也都以此作为数据来源。关于 /proc 目录的结构在 Linux Man Pages 里有很详细的说明,在《Linux/Unix 系统编程手册》这本书里,也有相关的中文说明。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了关于CPU数据采集工具的实现原理和案例分析。文章首先介绍了在Android系统中,当发生ANR时,系统会打印CPU相关信息到日志中,使用的是ProcessCpuTracker的实现,依赖于Linux的/proc伪文件系统。然后对/proc目录的结构和数据采集方式进行了详细说明。接着,文章通过分析一段CPU usage的日志数据,解释了如何根据日志中的信息来猜测CPU使用情况,并用代码还原这个情景。文章还对page fault的类型和产生原因进行了详细解释,并结合具体案例分析了iowait数据。最后,文章给出了代码实现和抓取到的CPU数据,以及如何分析ANR日志中的相关数据来查找性能瓶颈。整体来说,本文通过实际案例和代码实现,帮助读者了解了CPU数据采集工具的原理和分析方法,对于想深入了解Android系统性能优化的技术人员具有一定的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》,新⼈⾸单¥59
《Android 开发高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- Swing鹏飞模拟的这个例子,显示的都是minor fault,所以,而没有 major的统计,是因为文件系统的cache,还在等待批量写入磁盘吗?
作者回复: io写文件的过程从虚拟内存的数据写入到pagecache里,由系统writeback,这块是不涉及到page fault统计的,例子里的minor fault也是由于开了一个12mb的数组,在填满的过程中产生的fault。所以那30次循环并不会增加minor fault的数量
2019-02-1321 - Seven作业做完才发现鹏飞老师已经上传例子了。我只是参考了ProcessCpuTracker.java得到的数据是通过哪几个数据计算出来的,并没有参考上面的算法,因为开始兴高采烈的把ProcessCpuTracker.java的代码复制到项目中,项目一堆红线在我的脑门挂上了几条黑线。。。那时候就决定自己写,没想到确实可以利用ProcessCpuTracker.java里面的源码。 看到这句话“在不同的 Linux 内核中,该目录下的内容可能会有所不同”,才知道怪不得每个文档说的参数的含义不一样,原来内核不同。 想知道kernel这个数据代表什么意思,是怎么计算的2018-12-291
- 瑞那这种需要怎么解决呢?2019-06-03
收起评论