c - 测量从用户空间到内核空间的延迟的最佳方法是什么?

标签 c linux performance timer linux-kernel

我必须测量用户空间程序与其交互的驱动程序之间的延迟。我基本上通过这个应用程序发送一个数据包。 latecny在用户空间的write到内核相应的write函数之间

我在用户空间中使用了 clock_gettimeCLOCK_MONOTONIC 并且 getrawmonotonic 在内核(驱动程序)中,当我看到差异时,它是巨大的(大约 4 毫秒)。所以我肯定使用了错误的方法。

那么,最好的方法是什么?

最佳答案

要仅测量从用户空间到内核空间的单个上下文切换,请尝试使用 TSC(时间戳计数器)。它可用于 x86 和 ARM、用户空间和内核空间。

维基百科上有关 TSC 的更多信息:https://en.wikipedia.org/wiki/Time_Stamp_Counter

x86 的 BSD 许可实现 could be found herefor 64-bit ARM here.

此外,正如评论所建议的那样,考虑使用任何可用的标准工具来测量往返延迟,即使用到内核和返回。

关于c - 测量从用户空间到内核空间的延迟的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45306201/

相关文章:

c - 如何在全局变量中获得缓冲区溢出?

C - 循环后释放字符串

c - 尽管文件存在,但 dlopen 返回“未找到文件”

javascript - 检查属性与检查函数返回值的性能如何?

java - 以下哪一个是多键、多值 HashMap 的更有效实现?

c - 在 C 中将 char* 反序列化为结构体

c - 需要帮助了解\n、\b 和\r 将如何呈现 printf 输出

python - 循环可执行文件以从 Python 脚本获取结果

linux - 跨多行 Grep 但返回所有匹配项

mysql - 使用覆盖索引选择某一天的记录