我想比较两个 linux 内核版本之间的调度延迟。这是我到目前为止所尝试的:
- 在两个内核上配置 Ftrace
- 打开跟踪中的 sched 事件。
- 启用唤醒跟踪器。
但是,唤醒只显示最高优先级进程的结果,而不是我的 c 程序。我尝试使用 nice 并从跟踪中捕获它。它仍然显示其他同样高进程的日志。我是否错过了其他一些步骤来捕获我的流程日志?有没有更好的方法通过修改我的程序的源代码而不是在启动它时使用 nice 来将我的进程的优先级设置为最高?
我尝试的下一步是禁用唤醒跟踪器并仅启用 sched 事件。我得到的日志看起来像这样
0 1dNh3 3us+: sched wakeup : task hald : 1952 [120] success=1
−0 1d..3 7us! : sched switch : task swapper : 0 [140] (R) ==>
hald : 1952 [120]
并显示延迟+
(!
参考 ftrace 内核文档了解数量)。这是否意味着 sched wakeup 的延迟为 '+' 和 sched Witch '!' 分别是微秒?
还有其他比较linux调度延迟的方法吗?