任何显示线程切换的方法?

所有的,有没有什么办法或者工具来展示线程切换的过程,也就是我可以知道在任何特定的时间,CPU是由哪个线程以及时间上下文切换的成本,谢谢

SystemTap对于这种事情是有用的。 这里有一个固定的例子sched_switch.stp 。

但是它并不测量开关的使用时间。 至少有几个原因,这似乎很棘手。 首先,你必须决定一个适当的探头进入和退出来衡量三角洲,我现在没有找到任何东西。 (在相关的进程中输入/退出内核可能是一个很好的近似值?可能有些东西是这样的,尽管我现在没有看到它。)其次,如果你想知道在什么程度上值得避免上下文切换,如果您不经常考虑更换CPU任务缓存未命中,那么这将是一个不完整的图片,而那些来自后续的。 我认为获得答案的唯一好方法可能是实验性的。 尤其是,您可以尝试调整计划参数(请参阅cfs-tuning.pdf ),以了解更频繁的上下文切换如何影响程序的速度。

如果将ftrace编译到内核中,则可以使用sched_switch跟踪器输出进程唤醒和上下文切换的跟踪。 如果您的任务是RT调度,您也可以使用wakeup跟踪器来了解任务唤醒和调度之间的最大延迟时间。 有关更多信息,请参阅Documentation / trace / ftrace.txt