serious execution time jitter of a critical process in my motion control
application was spectated. I have been able to track this problem down
to a simple test case. Please refer to:
This test process consist of two threads. The main thread creates a
channel and connects to it in order to receive a pulse from a timer.
Then, this timer is created and set up to contineously deliver pulses
with a frequency of 1Khz.
Next, the second thread is created and becomes blocked on MsgReceive().
If a pulse from the timer is received, it gets unblocked and does some
calculations. When this calculations are finished it becomes blocked again.
As expected, the thread does its calculations every microsecond.
However, as you can see from the timeline provided on the website, my
thread looses the cpu to the process manager procnto for about 400us
sometimes. This happens contineously and periodically every few
seconds and is far to much time for my kind of application.
I made shure of the following so far:
- The priority of my process is higher than any other processes’ (except
- This occures with both, procnto and procnto-instr.
- The problem is experienced on QNX 6.2.1 and QNX 6.3.0.
- IDE bus mastering (DMA) is disabled.
- No further self-written or any third party applications are running.
So my questions are:
- Did I do something wrong in the code or is QNX exspected to perform
- Is there an option to prevent procnto from keeping the cpu for such a
long period of time?