linux - Linux 中精确到微秒级(或更好)的进程计时

标签 linux process real-time timing high-resolution-clock

我需要一种非常准确的方法来为程序的某些部分计时。我可以为此使用常规的高分辨率时钟,但这将返回挂钟时间,这不是我需要的:我需要只花时间运行我的进程。

我清楚地记得看到一个 Linux 内核补丁,它允许我将我的进程计时精确到纳秒级,只是我忘记了将它添加为书签并且我也忘记了补丁的名称:(。

不过我记得它是如何工作的:

在每次上下文切换时,它会读出高分辨率时钟的值,并将最后两个值的增量添加到正在运行的进程的进程时间中。这会生成过程实际过程时间的高分辨率准确 View 。

使用常规时钟保持常规处理时间,我认为它精确到毫秒 (1000Hz),这对于我的目的来说太大了。

有人知道我在说什么内核补丁吗?我还记得它就像一个前后有一个字母的单词——类似于“rtimer”之类的东西,但我记不太清了。

(也欢迎其他建议)


Marko 建议的 Completely Fair Scheduler 不是我想要的,但看起来很有希望。我遇到的问题是,我可以用来获取处理时间的调用仍然没有返回足够精细的值。

  • times() 返回值 21、22,以毫秒为单位。
  • clock() 返回值 21000、22000,粒度相同。
  • getrusage() 返回的值如 210002、22001(以及类似的值),它们的准确性看起来更高一些,但这些值看起来明显相同。

所以现在我可能遇到的问题是内核有我需要的信息,我只是不知道将返回它的系统调用。

最佳答案

如果您正在寻找这种级别的时序分辨率,您可能正在尝试进行一些微优化。如果是这样的话,你应该看看 PAPI .它不仅提供挂钟和虚拟(仅进程)计时信息,还提供对 CPU 事件计数器的访问,这在您尝试提高性能时是必不可少的。

http://icl.cs.utk.edu/papi/

关于linux - Linux 中精确到微秒级(或更好)的进程计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/182554/

相关文章:

linux - 什么代码不应该写成实时代码?

python - 在python脚本之间发送字符串

linux - bash:在 bash 脚本中时无法列出后台作业

c++ - 关于维基百科数据段的解释问题?

linux - 优化 Bash 脚本,移除 subshel​​l

go - 命令需要换行才能完成

php - 后台处理视频上传,有什么精通PHP的方法?

java - 虚拟机/云上的 Sun Java 实时系统

python - 如何从当前应用程序运行独立应用程序?

real-time - 他们如何在网页上显示实时数据?