【问题标题】:Time is not synchronized between userspace and kernel用户空间和内核之间的时间不同步
【发布时间】:2017-05-17 18:12:05
【问题描述】:

我正在尝试测量内核和用户空间之间的延迟,方法是每 1 秒触发一次定期计时器,并通知用户空间该事件(使用 ioctl 和 wake_up_interruptible

为此,我创建了一个使用 hrtimer 的内核模块,以及等待事件的用户空间测试。 内核模块正在使用

在内核中:getnstimeofday(),

获取时间,用户空间正在使用:

在用户空间中:clock_gettime()

但令人惊奇的是,我看到用户空间和内核的结果时间不同步!

第一个事件:

用户空间:8866[sec] 896197992[nsec];内核:1388251190[sec] 442706727[nsec]

第二次活动:

用户空间:8867[sec] 896151470[nsec];内核:1388251191[sec] 442690693[nsec]

你可以看到内核和用户空间时钟不同步, 所以我无法真正测量内核和用户空间事件之间的延迟,对吧?

感谢您的任何想法, 然

【问题讨论】:

    标签: linux kernel


    【解决方案1】:

    从您的测试结果来看,这两个 API 之间似乎只有一个“偏移量”,但是这两个事件在 sec 中的增量是正确的(1 sec diff)。并且来自文档 http://lxr.free-electrons.com/source/kernel/time/timekeeping.c?v=2.6.37#L101,内核时间 API “计算自上次 update_wall_time 以来的增量”。所以他们实际上没有相同的时间系统。 (用户空间获取系统定时器)。 我认为另一种方法可以使用称为 Ftrace 的 Linux 内核来测量这种延迟。

    【讨论】:

      猜你喜欢
      • 2011-05-25
      • 2012-03-02
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多