调度器31—Linux-5.10 调度相关trace分析技巧汇总

一、看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中不会有,需要手动使能来抓取才行!

 

posted on 2022-02-07 15:55  Hello-World3  阅读(622)  评论(0编辑  收藏  举报

导航