📄️ Execution Models
DetSched is an API which hides away the complexity of setting up and running a real-time execution environment. I.e., it creates real-time execution contexts, configures real-time threads and handles real-time inter-process-communication between real-time and non-real-time contexts. This is necessary, as the non-real-time contexts may not impede data access from the non-real-time environments. Based on the source code, a description of the real-time application’s threads is automatically generated. This description is used to calculate the concrete scheduling parameters necessary for deterministic behavior. This configuration is either calculated automatically during orchestration using our/an real-time enabled kubernetes scheduler (WIP), or semi-automatic by using our real-time analysis tool. The workflow is shown in the figure below. This configuration is loaded at deploy/runtime.
📄️ DetSched
The supported real-time scheduling models are shown in the figure. The main challenge to achieve real-time behavior is choosing the right parameters for the different levels of the scheduling hierarchy. Starting from the top, user logic is executed as “green threads”, i.e. as cooperatively (COOP) scheduled used-defined units of workload. This workload is distributed on system threads using an application-level scheduler. These system-threads are then scheduled on the CPU cores using one of the available system-level scheduler. For linux these are SCHEDDEADLINE and SCHEDFIFO. Thus, multiple decisions have to be made, to guarantee determinism for multiple services running concurrently on the same node.