我正在实施某种形式的内部探查器。有没有办法知道线程上下文切换的时间和持续时间?我知道windows有事件跟踪api,我知道perf记录了多少个上下文切换。有没有办法在linux上做到这一点?需要root权限不是问题,因为它将是一个内部工具。
答案 0 :(得分:2)
排序。
有关getrusage()
功能的信息,请参阅http://man7.org/linux/man-pages/man2/getrusage.2.html。
请注意,它返回的结构具有自愿和非自愿的上下文切换号。此外,您还拥有用户和系统时间。其他API返回挂钟时间。
任何超过用户和系统时间的挂钟时间都是您未运行的时间。
除此之外,您可以使用内核ftrace功能。见https://www.kernel.org/doc/Documentation/trace/ftrace.txt
阅读http://www.brendangregg.com/blog/2015-07-08/choosing-a-linux-tracer.html了解更多选项。