[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