收集有关 Linux 上的线程调度的信息

Posted

技术标签:

【中文标题】收集有关 Linux 上的线程调度的信息【英文标题】:Collecting information about thread scheduling on Linux 【发布时间】:2010-07-07 19:08:22 【问题描述】:

我想收集有关我的线程何时调度(和取消调度)以及在 Linux 上的 CPU 上的信息。我很乐意收集信息并将其存储在文件中以供以后离线分析,因为我需要将调度信息与我的代码生成的其他事件源合并。理想情况下,信息将由程序本身收集,因为我计划大部分时间使用机器上的所有内核,并且使用外部进程进行采样会干扰我想要测量的执行。

那么这在 Linux 上可行吗?有哪些选择?

【问题讨论】:

【参考方案1】:

Linux perf tool 是一个通用的内核支持的分析工具。除此之外,它还可以记录事件,包括任务调度事件。

【讨论】:

谢谢,我知道 perf,我真正想要的是指向 API 的指针,我可以使用这些指针从我自己的代码中获取信息。 @Simon Marlow:perf 就是那个 API。您不必担心它会影响您尝试测量的事物,因为它的工作方式是内核在事件发生时将事件记录到内部缓冲区中,并且用户空间工具在事后运行以提取事件记录。

以上是关于收集有关 Linux 上的线程调度的信息的主要内容,如果未能解决你的问题,请参考以下文章

有多个套接字时Linux OS如何调度线程

Linux 进程管理之进程调度与切换

浅析Linux线程调度

linux线程调度策略

有关线程进程协程

Linux 多进程多线程相关概念