I’m having a problem with some background thread apparently running at
too high a priority and taking time from the key real-time threads.
This seems to be a transient priority issue; in “System Process
Inspector”, everything looks good. Some questions:
Thread A at priority P1 does a sem_post. Thread B
at priority P2 (P2 < P1) was waiting in a sem_wait and now
becomes ready. Does thread B get boosted to priority P1,
or does it stay at priority P2? (Note thet thread A does
NOT do a sem_wait; this is a one-way operation.)
Thread A does a write to a disk. What is the highest
priority thread in the I/O system that will run as a result?
To what extent does the priority of thread A affect this?
Are there any useful tools other than “System Process Inspector”
that would help here? Thanks.
Our main driving control loop only has to cycle every 100ms, and
its worst-case time, measured by the thread itself, is 29ms. Yet
once in a while it misses the 100ms deadline and we shut down.
There’s other stuff running, but it’s all at lower priority, or should be.
We’re logging some data, but the logger is supposed to be running
at priority 9, while the main control code is at at priority 18.
[QNX 6.21, X86]