【问题标题】:Detecting long wait times in the Linux scheduler检测 Linux 调度程序中的长等待时间
【发布时间】:2012-01-26 22:18:00
【问题描述】:

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

【问题讨论】:

    标签: linux scheduler


    【解决方案1】:

    您需要“perf sched”实用程序,或者如果运行较旧的内核,则需要“ftrace”。

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

    性能调度 {record|latency|map|replay|script}

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

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

        man perf-sched
    

    【讨论】:

      【解决方案2】:

      我会使用OProfile

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

      【讨论】:

      • 在内核中的调度代码中添加额外的逻辑可能会影响结果,尤其是因为它被称为 ALOT :)
      猜你喜欢
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      相关资源
      最近更新 更多