我需要一种非常精确的方法来计时我的程序的部分。我可以使用常规的高分辨率时钟来实现,但那将返回挂钟时间,这不是我需要的:我需要仅运行我的进程所需的时间。
我清楚地记得看到过一个Linux内核补丁,可以让我以纳秒精度计时我的进程,但我忘记了将它加为书签并且我也忘记了补丁的名称 :(。
但我还记得它是如何工作的:
在每个上下文切换时,它将读取高分辨率时钟的值,并将最后两个值的差添加到运行进程的进程时间中。这会产生进程的实际进程时间的高分辨率准确视图。
普通进程时间使用常规时钟保持,我相信它是毫秒精度(1000Hz),远远大于我需要的。
有人知道我在谈论什么内核补丁吗?我还记得它是一个单词,前面或后面带有一个字母 - 类似'rtimer'之类的东西,但我不记得具体是什么了。
(其他建议也是可以考虑的)
Marko提出的完全公平调度程序不是我要找的,但它看起来很有前途。我遇到的问题是我可以使用的调用仍然未返回足够细粒度的值。
- times()以毫秒为单位返回21、22的值。
- clock()以21000、22000的值返回,具有相同的粒度。
- getrusage()返回的值如210002、22001(等等),它们看起来具有更好的准确性,但这些值看起来明显相同。
所以现在我可能遇到的问题是内核拥有我需要的信息,我只是不知道哪个系统调用会返回它。