System Trace in Depth
原理
使用 system trace 时,会记录最近 5s 的 kernel trace,然后分析下面的操作:
- Scheduling activity
- System calls
- Virtual memory operations
使用
在代码里插入相应的语句,当运行到这里是,会在 Instrument 的结果中。
插入的语句可以指明一个事件的发生,或者一个时间段的起始和结束。其中第一个参数指定事件的 ID, 是一个整数。
//某个事件的发生 // Emit a signpost for Instruments kdebug_signpost(5, 0, 0, 0, 0) //事件段的起始和结束 // Timing an activity (code 10 - "Start Up") kdebug_signpost_start(10, 0, 0, 0, 0); [self loadAssets]; kdebug_signpost_end(10, 0, 0, 0, 0);
查看感兴趣的点的统计信息
可以在 5 个选项之间查看。
如果选择第四个,可以看到统计信息,包括最小持续时间、平均时长、最多持续时间等。

选择列表中的某个点以后,右键选择,可以过滤掉其他时间的信息。

查看线程信息
选中某一个线程以后,可以选择看出线程的信息。

Narrative 按照时间顺序给出了线程调度的信息。

Summary: Thread State 给出了线程处于各个状态的统计信息。
time profile 只是查看 CPU 的执行情况,如果一个线程长时间得不到调度,在 time profile 里得不到相应的信息。
System Load
可以看到各个时刻的线程的状态。

User Interactive Load Average
统计的是 10ms 内,线程优先级大于33 以及 QoS 是 User Interactive Class 的线程数目。
当数目大于 CPU 数目时,会标记为橙色。

参考
posted on 2018-01-03 21:04 花老???? 阅读(798) 评论(0) 编辑 收藏