调度器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   Hello-World3  阅读(676)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示