我必须测量用户空间程序与其交互的驱动程序之间的延迟。我基本上通过这个应用程序发送一个数据包。 latecny在用户空间的write
到内核相应的write
函数之间
我在用户空间中使用了 clock_gettime
和 CLOCK_MONOTONIC
并且
getrawmonotonic
在内核(驱动程序)中,当我看到差异时,它是巨大的(大约 4 毫秒)。所以我肯定使用了错误的方法。
那么,最好的方法是什么?
最佳答案
要仅测量从用户空间到内核空间的单个上下文切换,请尝试使用 TSC(时间戳计数器)。它可用于 x86 和 ARM、用户空间和内核空间。
维基百科上有关 TSC 的更多信息:https://en.wikipedia.org/wiki/Time_Stamp_Counter
x86 的 BSD 许可实现 could be found here 和 for 64-bit ARM here.
此外,正如评论所建议的那样,考虑使用任何可用的标准工具来测量往返延迟,即使用到内核和返回。
关于c - 测量从用户空间到内核空间的延迟的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45306201/