We are happy to share new developments in the context of the ADMORPH project. In concrete, we developed the following two main experimental extensions to SYSGO’s PikeOS real-time OS to support runtime adaptation research in ADMORPH project.
We introduce support for monitoring CPU core affinity of threads during runtime. The problem addressed here is related to runtime faults in the CPU potentially caused by a heavy usage of a specific core.
Our goal is to adapt the execution on this core in function of its current usage. A heavy usage can cause overheating of the core. Resulting arbitrary faults are more likely to occur and to damage the system, in comparison to a scenario with nominal CPU core usage.
Hence, we want to reduce the activity of the given core, before such core usage issues occur during runtime. For this, we introduce support for runtime thread migration in PikeOS: it is now possible, during runtime, to migrate the execution of a thread to another (pre-configured) CPU core. Thus, we let the initial CPU core cool down before continuing execution.
Time Partition Shifting
We introduce support for scheduling adaptation in a PikeOS system. In certified real-time systems such as PikeOS, scheduling schemes are defined very static to guarantee the deterministic execution of critical tasks. In a standard PikeOS version, we statically define in the scheduling scheme(s) specific time windows for tasks to execute. As the goal – especially for safety-critical tasks – is for the task to meet its deadline (i.e. terminating before the end of its pre-configured time window), the system integrator is likely to configure conservative (i.e. safe) time windows, which would be longer than the WCET of the task. However, the cases when the task execution time reaches its WCET are supposed to be rare.
Hence, the CPU is idle until end of the time window instead of doing actual work. Nevertheless, note that PikeOS allows background activity with time partition 0 on every CPU cores (as described in the PikeOS User Manual).
Thus, we introduce a new functionality in PikeOS for a task to notify the system that it has returned at the end of its job in the current time window. After that, the system shifts the following time windows, so that the next task in the schedule can start the execution earlier. This time partition shifting property propagates, so that tasks can possibly have more time to execute than the pre-configured time window. This also means that the latest the time window is configured, the less likely is for the corresponding task to execute beyond its deadline.