为什么纳米睡眠在虚拟机中不准确

时间:2018-01-04 14:23:58

标签: c linux archlinux

我想检查nanosleep()的准确程度,所以我编写了一个包含4个步骤的程序,而(1),

  1. 以纳秒为单位获取当前时间
  2. 睡眠纳秒100 000
  3. 以纳秒为单位获取当前时间
  4. 检查步骤3和步骤1中的时间差异。
  5. 预期输出:差异应该是大约100,000纳秒,但它显示>有时会发生1毫克的变化。

    从示例程序输出打印:

    粒度失败nanosec diff:1,696,699。

    颗粒性失败nanosec end nano:340672813,启动纳米:338976114

    注意:我在一秒钟内观察到这~2次,这意味着10000次中有2次左右。睡眠时间超过1毫秒而不是100微秒。这种行为见于虚拟机和Baremetal

    请帮助我了解原因和替代方法或微调睡眠粒度的方法。

    操作系统:Linux Fedora-23 Centos-7.1

0 个答案:

没有答案