[LITMUS^RT] Running LITMUS-RT on ARM64
Björn Brandenburg
bbb at mpi-sws.org
Tue Aug 29 16:33:09 CEST 2017
> On 29. Aug 2017, at 16:17, Meng Xu <xumengpanda at gmail.com> wrote:
>
>
> But I think we can still run periodic real-time task in LITMUS^RT in
> virtualization, if the following three conditions hold:
I think you should distinguish between “can run a synthetic benchmark workload” and “can run a real workload”.
> 1) the job() in each task performs a known amount of work. For
> example, if it takes 1ms to perform 2M addition operations, we can let
> the job do e * 2M addition operations to create a periodic task with
> WCET = e;
This is obviously relevant only for a synthetic evaluation workload.
> 2) the termination condition of each job() is that the job finishes
> the known amount of work, not the amount of time it thinks it runs;
This is not an issue for a real workload, either.
> 3) in LITMUS^RT scheduler, the scheduler let a task overrun even when
> the task has no budget. In other words, LITMUS^RT does not enforce the
> budget;
>
> The condition 1) and 2) can be satisfied by creating a real-time task
> based on base_task.c;
> The condition 3) is satisfied by default in LITMUS^RT (2015), IIRC.
This depends on the setting and scheduler. It’s false for the P-RES and PFair plugins. It’s ok for P-FP, PSN-EDF, C-EDF, and GSN-EDF **if** the budget policy is set to NO_ENFORCEMENT.
https://github.com/LITMUS-RT/litmus-rt/blob/linux-4.9-litmus/include/litmus/rt_param.h#L31
https://github.com/LITMUS-RT/litmus-rt/blob/linux-4.9-litmus/include/litmus/rt_param.h#L123
Bottomline: you can run real-time workloads in LITMUS^RT under virtualization, but only if you disable all of LITMUS^RT’s temporal isolation features.
Would be interesting to know how well SCHED_DEADLINE’s notion of budget enforcement works under virtualization…
- Björn
More information about the litmus-dev
mailing list