I'd like to understand the difference between nice values (used for SCHED_OTHER
scheduling) and static values (used for SCHED_RR
& SCHED_FIFO
{1..99} and 0 for SCHED_OTHER
).
In short: nice values are best effort, static priority values are strict.
What this means is that even the nicest process (highest nice level, lowest priority) can and will get CPU time delaying processes with higher nice values (it will not starve).
A process with low strict priority though (including strict priority 0) will never delay the execution of a process with higher strict priority that is runnable.