请问有没有什么办法或者工具可以展示线程切换的过程,即可以知道在任何特定的时间,CPU被哪个线程占用,以及上下文切换的时间成本,谢谢
SystemTap 对于这种事情很有用。有一个罐装的例子sched_switch.stp http://sourceware.org/systemtap/examples/profiling/sched_switch.stp为了这。
但它不会测量切换所用的时间。这看起来很棘手,至少有几个原因。首先,您必须为入口和出口决定合适的探针来测量增量,但我现在没有找到任何东西。 (在相关进程中进入/退出内核可能是一个不错的近似值?虽然我现在还没有看到,但可能有一些东西。)其次,如果您想知道在多大程度上值得避免上下文切换,那么它如果您不考虑更频繁地切换任务而导致的额外 CPU 缓存未命中,那么这将是一幅不完整的图景,而这些是随后发生的。我认为获得答案的唯一好方法可能是实验。特别是,您可以尝试调整调度参数(请参阅cfs-调优.pdf http://www.fizyka.umk.pl/~jkob/prace-mag/cfs-tuning.pdf)以查看更频繁的上下文切换如何影响程序的速度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)