第35讲 perfetto 分析cpu 调度 -凯发k8旗舰厅

本讲是android camera性能分析专题的第35讲,我们介绍perfetto 分析cpu 调度。

更多资源:

资源 描述
在线课程
知识星球 星球名称:深入浅出android camera
星球id: 17296815
wechat 极客笔记圈

需要打开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状态简介

cpu状态简介

cpu状态 说明
sleeping 线程处于休眠状态,一般是在等待事件驱动
runnable 线程有task要运行,但是cpu调度器 scheduler 尚未调度让它运行,如果长时间调度不到,说明cpu繁忙
running 线程正处于运行状态,线程在正常执行代码逻辑
uninterruptible sleep – non io 不可中断的休眠状态,非io导致,在等内核锁。通常是低内存导致等待、各种各样的内核锁。
uninterruptible sleep – block io 不可中断的休眠状态,io阻塞

perfetto查看scheduling wakeups

选中cpu的running状态

perfetto查看scheduling wakeups

然后切到cpu slice,就可以看到wakeup关系

perfetto查看scheduling wakeups

如何分析uninterruptible sleep原因

  • 只适用于userdebug/eng版本

  • ftrace_config里面加入

symbolize_ksyms: true
ftrace_events: "sched/sched_blocked_reason"
  • 在threadstate里面能看到,效果如下:

如何分析uninterruptible sleep原因

camera课程

python教程

java教程

web教程

数据库教程

图形图像教程

办公软件教程

linux教程

计算机教程

大数据教程

开发工具教程

android camera性能分析

网站地图