2024年10月30日 第35讲 Perfetto 分析CPU 调度 极客笔记
本讲是Android Camera性能分析专题的第35讲,我们介绍Perfetto 分析CPU 调度。
更多资源:
| 资源 | 描述 |
|---|---|
| 在线课程 | 极客笔记在线课程 |
| 知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
| 极客笔记圈 |
需要打开Scheduling events Trace Config。
data_sources: {
config {
name: "linux.process_stats"
target_buffer: 1
process_stats_config {
scan_all_processes_on_start: true
}
}
}
data_sources: {
config {
name: "linux.ftrace"
ftrace_config {
ftrace_events: "sched/sched_switch"
ftrace_events: "power/suspend_resume"
ftrace_events: "sched/sched_wakeup"
ftrace_events: "sched/sched_wakeup_new"
ftrace_events: "sched/sched_waking"
ftrace_events: "sched/sched_process_exit"
ftrace_events: "sched/sched_process_free"
ftrace_events: "task/task_newtask"
ftrace_events: "task/task_rename"
buffer_size_kb: 2048
drain_period_ms: 250
}
}
}

| CPU状态 | 说明 |
|---|---|
| Sleeping | 线程处于休眠状态,一般是在等待事件驱动 |
| Runnable | 线程有Task要运行,但是CPU调度器 scheduler 尚未调度让它运行,如果长时间调度不到,说明CPU繁忙 |
| Running | 线程正处于运行状态,线程在正常执行代码逻辑 |
| Uninterruptible Sleep – Non IO | 不可中断的休眠状态,非IO导致,在等内核锁。通常是低内存导致等待、各种各样的内核锁。 |
| Uninterruptible Sleep – Block IO | 不可中断的休眠状态,IO阻塞 |
选中CPU的Running状态

然后切到CPU Slice,就可以看到wakeup关系

只适用于userdebug/eng版本
ftrace_config里面加入
symbolize_ksyms: true
ftrace_events: "sched/sched_blocked_reason"

本文链接:http://so.lmcjl.com/news/16598/