![v2-3dbf7569e2b3e8c564e1653ce3b4df93_1440w.jpg?source=172ae18b](http://img-01.proxy.5ce.com/view/image?&type=2&guid=f53f8a81-3a30-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-3dbf7569e2b3e8c564e1653ce3b4df93_1440w.jpg?source=172ae18b)
- 申明
- 源码
- 进程cpu使用率
- cpu核心使用率
- 总结
- app耗电监控之cpu使用率监控
linux/android 获取进程或系统cpu使用率,可以简单的读取/proc/pid/stat /proc/stat等文件快速搞定。一个cat命令搞定。
而mac os,却比较麻烦,几乎都是通过api编程方式,那是哪些api呢?
android app 和iOS app 怎么做cpu 耗电监控呢?
申明
本文说的全是错的。
源码
- htop 源码: https://github.com/hishamhm/htop.git
- apple 开源Darwin代码
获取单个进程的 utime 和 stime
//DarwinProcess.c
核心代码:
#define PROC_PIDTASKINFO 4
cpu整体耗时
typedef
cpu使用率是 抽样后取差值,再计算百分比
// kernel cpu的 4种状态
下面来看下各个cpu的各个状态的ticks怎么得来的
ProcessList_allocateCPULoadInfo
关键函数为:
host_processor_info
关键函数:
processor_info
PROCESSOR_DATA 定义:
struct
总结
cpu整体使用率:
host_processor_info
进程单个使用率:
struct
app耗电监控之cpu使用率监控
android app 和iOS app 怎么做cpu监控呢?
可以参考上文方法,读取进程下各个线程cpu的utime stime等,如果使用率超过比如80%,那么就需要dump 线程堆栈 方便后续耗时耗电分析。
话说 当年乔布斯重回苹果,收拾原来的mac os烂摊子,曾经和Linux之父 Linus 沟通 mac使用采用Linux作为内核,但是没谈成。不然现在的 mac iphone 就可能和Android 成为兄弟了。