Skip to main content
 首页 » 操作系统

Linux 调度相关trace分析技巧汇总

2022年07月19日55qq78292959

一、看RT线程的sync唤醒标志

(1) MTK:

select_task_rq_rt 
    trace_android_rvh_select_task_rq_rt(p, cpu, sd_flag, flags, &target_cpu); //可以在 /sys/kernel/tracing 下检索到它,若是能检索到就说明注册了! 
        mtk_select_task_rq_rt //eas/eas_plus.c 
            trace_sched_select_task_rq_rt(p, select_reason, *target_cpu, sd_flag, sync); 
 
TRACE_EVENT(sched_select_task_rq_rt, //eas_trace.h 
 
irq/398-touch-0-15970   [000] d.h3 13760.252305: sched_select_task_rq_rt: pid= 208 policy=0x00004000 target=1 uclamp_min=0 
        uclamp_max=1024 sd_flag=8 sync=0 mask=0xff cpuctl=1 cpuset=1 act_mask=0xff

pid:参数 tsk->pid
policy: 参数 policy, 就是 select_reason。
target:参数 target_cpu
uclamp_min:参数 uclamp_eff_value(tsk, UCLAMP_MIN);
uclamp_max:参数 uclamp_eff_value(tsk, UCLAMP_MAX);
sd_flag:参数 sd_flag
sync: 参数 sync, 否是同步唤醒
mask: 参数task的 tsk->cpus_ptr->bits[0]; 也就是任务的CPU亲和性
cpuctl:tsk所在的cpuctl cgroup,取自 sched_cgroup_state_rt(tsk, cpu_cgrp_id);
cpuset:tsk所在的cpuset cgroup,取自 sched_cgroup_state_rt(tsk, cpuset_cgrp_id);
act: 系统此时active cpu, 取自 cpu_active_mask->bits[0];

注:默认抓trace是不会使能这个trace_event的,因此trace中不会有,需要手动使能来抓取才行!


本文参考链接:https://www.cnblogs.com/hellokitty2/p/15868159.html