2014-03-25 64 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

相關問題