我需要一个非常准确的方法来计算我的程序的部分内容。我可以使用普通的高分辨率时钟,但这会返回壁挂时间,这不是我所需要的:我需要花费的时间只运行我的过程。微秒准确(或更好)的Linux进程时序
我清楚地记得看到一个Linux内核补丁,让我到时候我的流程,以纳秒的精度,但我忘了书签它,我忘了修补程序的名称以及:(。
我记得它的工作原理如下:
在每次上下文切换时,它都会读出高分辨率时钟的值,并将最后两个值的差值添加到正在运行的进程的进程时间中,从而产生高分辨率准确地查看过程的实际处理时间
定期处理时间保持使用常规时钟,这是我相信毫秒准确(1000Hz),这是我的目的太大了。
有谁知道我在说什么内核补丁?我还记得它就像是一个带有前后字母的词 - 像'rtimer'之类的东西,但我不记得确切。
(其他建议也欢迎)
完全公平调度器建议用马尔科建议是不是我一直在寻找,但它看起来很有希望。我遇到的问题是我可以用来获取处理时间的调用仍然没有返回足够精细的值。
- times()返回值21,22,以毫秒为单位。
- clock()返回值21000,2200,相同的粒度。
- getrusage()返回值如210002,22001(和其他),他们看起来有更好的准确性,但值看起来显着相同。
所以,现在我可能遇到的问题是内核有我需要的信息,我只是不知道将返回它的系统调用。
也许这将有助于CFS:http://kerneltrap.org/node/8059 有一封来自作者的电子邮件,其中包含粗略的配置说明。 – 2008-10-09 11:28:58