C语言 Linux 获取上下文切换计时



我正在实现某种形式的内部分析器。有没有办法知道线程何时以及多长时间被上下文切换?我知道 Windows 有它与事件跟踪 api 并且我知道 perf 记录了发生多少上下文切换。有没有办法在 Linux 上做到这一点?需要root权限不是问题,因为它将是一个内部工具。

有点。

请参阅有关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 了解更多选项。

最新更新