c - Linux 获取上下文切换时序

标签 c linux profiling context-switch

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

最佳答案

有点。

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

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

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

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

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

关于c - Linux 获取上下文切换时序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42897118/

相关文章:

c - 通过引用和指针传递

java - 统计一个线程被抢占了多少次?

WPF:在从 WinForms 启动的 Windows 上使用 Snoop?

Java VisualVM 不显示/列出我的 tomcat java 进程

java - 如何找出哪种方法花费了很多时间?

64位有符号整数组合乘除运算无溢出

c# - 从 C# 调用 C DLL

c++ - 使用-gcc 自动包含多个源文件?

node.js - 从 systemd Node 应用程序生成的 Shell 脚本不编辑等文件

linux - 如何在 Linux 上的 Bash 中一次删除多个文件?