Linux 获取上下文切换时间

Linux get context switch timing

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

有点。

请参阅 http://man7.org/linux/man-pages/man2/getrusage.2.html 关于 getrusage() 函数。

请注意,它 return 的结构具有自愿和非自愿的上下文切换编号。此外,您还有用户和系统时间。其他 API return 挂钟时间。

任何大于您的用户和系统时间的挂钟时间都是您不在的时间 运行。

除此之外,您可能还可以使用内核 ftrace 功能。参见 https://www.kernel.org/doc/Documentation/trace/ftrace.txt

阅读 http://www.brendangregg.com/blog/2015-07-08/choosing-a-linux-tracer.html 以获得更多选项。