我需要一种非常准确的方法来计时我的程序的某些部分。我可以为此使用常规的高分辨率时钟,但这会返回挂钟时间,这不是我需要的:我需要只运行我的进程所花费的时间。
我清楚地记得看到一个 Linux 内核补丁,它可以让我将我的进程计时到纳秒精度,除了我忘记给它添加书签并且我也忘记了补丁的名称:(。
我记得它是如何工作的:
在每次上下文切换时,它会读取一个高分辨率时钟的值,并将最后两个值的增量添加到正在运行的进程的进程时间。这产生了过程的实际过程时间的高分辨率准确视图。
常规处理时间使用常规时钟保持,我相信这是毫秒级的(1000Hz),这对于我的目的来说太大了。
有谁知道我在说什么内核补丁?我还记得它就像一个单词,在它之前或之后有一个字母——比如“rtimer”之类的东西,但我不记得确切了。
(也欢迎其他建议)
Marko 建议的完全公平调度器不是我想要的,但它看起来很有希望。我遇到的问题是我可以用来获取处理时间的调用仍然没有返回足够细化的值。
- times() 以毫秒为单位返回值 21、22。
- clock() 返回值 21000、22000,粒度相同。
- getrusage() 正在返回诸如 210002、22001 (和类似的)之类的值,它们看起来有更好的准确性,但这些值看起来明显相同。
所以现在我可能遇到的问题是内核有我需要的信息,我只是不知道将返回它的系统调用。