最近,我在Zynq-7000平台(ARM A9)上实施了QNX Neutrino RTOS,并测量了不带任何CPU负载的不同任务频率的调度抖动。 在我的测试中,我在MsgReceive函数中等待由计时器生成的脉冲。然后我从FPGA(100MHz)读取高频时钟。 我测量了10Hz,100Hz,1kHz,10kHz和100kHz任务的调度抖动,并得到了奇怪的结果。对于短期任务,我得到(-300,+ 300)纳秒的抖动,但是在更长的时间内我得到了以下内容:
抖动不仅会对更长时间的任务变大,而且总是大于零。我没想到会有这样的差异。有人能提供一些这种行为的解释吗?可能由POSIX标准解释,它允许定时器过早过期但有开销?为什么它在长期任务中变得更加明显?