I have a question regarding “Realtime” support in Linux/Ubuntu:
“Realtime” support in Linux seems to be twofold: On the one hand, there is the PREEMPT_RT patch, which brings “real-time computing” capabilities to the kernel; on the other hand, there are “realtime” scheduling strategies, such as SCHED_FIFO
, SCHED_RR
and SCHED_DEADLINE
.
But how does it all come together?
What happens if I use one of the “realtime” scheduling strategies (e.g. SCHED_DEADLINE
) on a “vanilla” kernel, i.e. one that does not have PREEMPT_RT
enabled? One would assume that this is not even possible. But it seems that it is possible, according to my test on a “vanilla” (non-realtime) kernel! What does it mean? Do the “realtime” scheduling strategies still work with the “non-realtime” kernel, just not “as good”? Or does it mean that the “realtime” scheduling strategies silently are the same as SHED_OTHER
when running on a “non-realtime” kernel?
Furthermore, assuming that I’m using a “realtime” kernel, i.e. one that does have PREEMPT_RT
enabled: Will there be any difference at all, compared to a “vanilla” (non-realtime) kernel, if I do not explicitely start any processes with one of the “realtime” scheduling strategies?
(Bonus question: How does a process’ “niceness” play together with “realtime” scheduling?)