1

我正在为一些研究开发用户级跟踪器包装器,我需要专门研究内核中的上下文切换。从这篇LWN 文章(“sched_switch”下大约三分之一的部分)开始,我注意到我的系统(运行 3.10.9 内核的 Android 设备)输出与文章(为 2.6 内核编写)之间存在一些差异. 我最大的问题是缺少下一个任务状态。为了准确显示,文章的输出格式为

sleep-4055  [01]   240.132371:   4055:120:S ==>  3997:120:R

(关注最后的 R 表示下一个状态的状态)我的输出:

GLThread 292-7361  [000] d..3  9421.164945: sched_switch: prev_comm=GLThread 292 prev_pid=7361 prev_prio=120 prev_state=R ==> next_comm=surfaceflinger next_pid=3036 next_prio=98

现在互联网上的资源都有点杂乱无章,所以我希望能快速澄清一下。

在文章中,跟踪由

echo sched_switch > /debug/tracing/current_tracer

现在在我的系统上,我没有这个作为可用的跟踪器

odroidxu3:/d/tracing # cat available_tracers
function_graph wakeup_rt 唤醒函数 nop

但我可以通过以下接口跟踪 sched_switch 事件

$cat 可用事件 | grep sched_switch
sched:sched_switch

$ls 事件/sched/ | grep 开关
sched_switch

这让我问,我的内核是否缺少一些需要修补的功能(类似于这篇文章)或者 ftrace 接口是否将 sched_switch 从可用跟踪器移动到 ftrace 事件?

如果确实需要打补丁,在哪里可以找到已编译的列表/正在进行的 ftrace 补丁列表?

干杯

4

0 回答 0