Critical threads

Updated: May 06, 2022

A critical thread is one that's allowed to run even if its partition is over budget (provided that partition has a critical time budget). When you create a partition, you can specify:

Critical threads always see realtime latencies, even when the system is fully loaded, or any time other threads in the same partition are being limited to meet budgets. The basic idea is that a critical thread is allowed to violate the budget rules of its partition and run immediately, thereby obtaining the realtime response it requires. For this to work properly, there must not be many critical threads in the system. If critical threads are the majority, the thread scheduler will rarely be able to guarantee all of the partitions their minimum CPU budgets, and the system degrades to a priority-based thread scheduler.

Critical time is billed against a partition while all these conditions are met:

Otherwise, the critical time isn't billed. The critical threads run whether or not the time is billed as critical. The only time critical threads won't run is when their partition has exhausted its critical budget (see Bankruptcy).

To make a partition's critical budget infinite, set it to the number of processors times the size of the averaging window. Do this with caution, as it can cause security problems; see the Security for Scheduler Partitions chapter of this guide.