检测Linux调度程序中的长等待时间

时间:2012-01-26 22:18:00

标签: linux scheduler

我一直试图找到一种方法来检测特定线程何时在CPU上运行以及何时不运行。理想情况下,我想直接挂钩内核以跟踪我的线程何时被调度,何时产生,以及何时被上下文切换中断。是否有可以准确报告此信息的现成工具?

2 个答案:

答案 0 :(得分:2)

你想要'perf sched'实用程序,或者如果运行旧内核,'ftrace'。

'perf sched'目前有五个子命令:

perf sched {record | latency | map | replay | script}

  • 记录 - 任意工作负载的低开销记录
  • 延迟 - 每个任务延迟指标的输出
  • 地图 - 显示上下文切换的摘要/地图
  • 重播 - 使用模拟线程重播捕获的工作负载
  • script - 查看记录的工作负载的详细跟踪

http://lwn.net/Articles/353295/

    man perf-sched

答案 1 :(得分:0)

我会使用OProfile

这是查看系统性能最简单的方法,并且可能足以满足您的需求。如果您需要其他超级自定义的东西,那么您最终可能会做一些事情,例如构建一个自定义内核,在调度感兴趣的事件期间切换GPIO,并使用逻辑分析器查看信号。我不推荐这种方法,因为它不值得你花时间。