Underload occurs when partitions demand less CPU time than their defined budgets, over the averaging window. For example, if we have three partitions:
with light demand in all three partitions, the output of the aps show command might be something like this:
+-------- CPU Time -------+-- Critical Time -- Partition name id | Budget | Max | Used | Budget | Used --------------------+-------------------------+------------------- System 0 | 70% | 100% | 6.23% | 200ms | 0.000ms Pa 1 | 20% | 100% | 15.56% | 0ms | 0.000ms Pb 2 | 10% | 100% | 5.23% | 0ms | 0.000ms --------------------+------------------+-------------------------- Total | 100% | | 27.02% |
In this case, all three partitions demand less than their budgets.
Whenever partitions demand less than their budgets, the thread scheduler chooses between them by picking the highest-priority running thread. In other words, when underloaded, the thread scheduler is a strict realtime scheduler. This is simply typical of QNX Neutrino scheduling.