当前位置:  开发笔记 > 运维 > 正文

Linux中的微秒准确(或更好)处理时序

如何解决《Linux中的微秒准确(或更好)处理时序》经验,为你挑选了2个好方法。

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

我清楚地记得看到一个Linux内核补丁,它允许我将我的进程计时到纳秒精度,除了我忘了给它添加书签,我也忘记了补丁的名称:(.

我记得它是如何工作的:

在每个上下文切换时,它将读出高分辨率时钟的值,并将最后两个值的增量添加到正在运行的进程的处理时间.这样可以生成过程实际处理时间的高分辨率精确视图.

使用常规时钟保持常规处理时间,我相信毫秒精确(1000Hz),这对我来说太大了.

有谁知道我在说什么内核补丁?我还记得它就像一个带有字母的字母在它之前或之后 - 像'rtimer'之类的东西,但我记不清楚了.

(也欢迎其他建议)


Marko建议的完全公平调度程序不是我想要的,但看起来很有希望.我遇到的问题是,我可以用来获取处理时间的调用仍然没有返回足够精细的值.

times()返回值21,22,以毫秒为单位.

clock()返回值21000,22000,粒度相同.

getrusage()返回的值如210002,22001(以及其中一些),它们看起来有更好的准确性,但值看起来显着相同.

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



1> 小智..:

有关更多信息,请参阅此问题.

我用过这些东西的东西是gettimeofday().它提供了一个秒和微秒的结构.在代码之前调用它,之后再调用它.然后使用timersub减去两个结构,你可以从tv_usec字段获得花费的时间.



2> mch..:

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

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

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有