2014-03-25 36 views
5

我正在写一个内核模块一个特殊的摄像机,通过V4L2工作来处理帧的传送到用户空间代码。然后我做很多的应用程序用户空间的东西..Linux的跨定时内核和用户空间

这里的时机非常关键,所以我一直在做大量的性能分析和老旧的跟踪时间的东西,但是我已经达到了需要从内核一侧收集时序数据的程度,以便我可以分析从硬件通过V4L DQBuf中断用户空间的完整路径...

谁能推荐一个很好的方式来获得高分辨率定时的数据,这将是与应用用户空间数据是一致的,即我可以用这种比较?现在,我测量活动以微秒..

的Ubuntu LTS 12.04

回答

1

如果您在x86/x86-64处理器上,最低级别上有rdtscrdtscp指令。这应该提供跨越内核/用户空间边界的最低开销,尽可能高的分辨率。

然而,有你需要担心的事情。你需要确保你在同一个核心/ CPU上执行,这个过程没有被上下文切换,并且在调用中频率没有变化。如果CPU支持不变的tsc,(constant_tsc/proc/cpuinfo),它在cpu /内核和频率上更加可靠。

这应该提供大约纳秒的准确度。

+0

@Yeraze:您可以删除一些通过设置CPU亲和力的设备驱动程序和应用程序由Jason提到的问题。 – wallyk

相关问题