0

最近我在 Zynq-7000 平台 (ARM A9) 上实现了 QNX Neutrino RTOS,并在没有 CPU 负载的情况下测量了不同任务频率的调度抖动。在我的测试中,我在 MsgReceive 函数中等待计时器生成的脉冲。然后我从 FPGA (100MHz) 读取高频时钟。我测量了 10Hz、100Hz、1kHz、10kHz 和 100kHz 任务的调度抖动,得到了奇怪的结果。对于短期任务,我得到了 (-300,+300) 纳秒抖动,但对于较长时间的任务,我得到了以下结果:

  • 1kHz 任务有 (+600, +1300) 纳秒抖动
  • 100Hz 任务有 (+8, +12) 微秒 (!) 抖动
  • 10Hz 任务有 (+69,+71) 微秒抖动

抖动不仅在较长周期的任务中变得更大,而且它总是大于零。我没想到会有这样的差异。任何人都可以对这种行为提供一些解释吗?是否可以通过 POSIX 标准来解释,它允许计时器不会过早到期而是有开销?为什么它在长期任务中变得更加明显?

4

0 回答 0