[LITMUS^RT] Litmus for non-RT schedulers

Glenn Elliott gelliott at cs.unc.edu
Sat Sep 22 02:46:02 CEST 2012


> Dear Professor Anderson,
> 
> I am reading through your multicore scheduling papers and have some questions:
> 
> 1. What is the effort of modifying your algorithms from real-time to regular (non real-time) applications? 
> 
> 2. Can  LITMUS open source be easily modify for non real-time also?
> 
> I am interested in multicore scheduling with shared single LLC (same as Fig 1 in your paper). Probably mainly for
> ARM architecture so multi-thread is not a factor. If you know papers talk about this area, please kindly let me know.
> 
> Thank you.
> 
> Greg


Hi Greg,

Jim forwarded me your question.  We like to handle these sorts of question on the Litmus-RT mailing list, so I am responding to your question by way of the mailing list.

> 1. What is the effort of modifying your algorithms from real-time to regular (non real-time) applications? 

I'm not sure which algorithms you are referring to.  The multiprocessor state machine and binomial heaps could be useful in implementing non-real-time schedulers.  The plug-in architecture of Litmus can also be leveraged.

With respect to application-level code, it shouldn't be too hard.  However, Litmus has built-in support for periodic tasks.  A periodic task gets released for scheduling at regular periods of time.  Generally speaking, a released task is ready/eligible to execute until it reports to Litmus that its current "job" (the work to perform each period) has completed.  After this, the task goes to sleep and isn't woken up until its next period begins.

You can simulate this behavior at the application-level in Linux by using either POSIX 1b timers in conjunction with POSIX semaphores or condition variables, as well as calls to nanosleep().

> 2. Can  LITMUS open source be easily modify for non real-time also?

I don't believe implementing a non-real-time scheduler in Litmus would be too difficult (at least not more difficult than common real-time schedulers).  Of course, difficulty will depend greatly on the complexity of your scheduling algorithm.  However, Litmus has hooks into Linux's schedule() and tick() functions, so I believe that much/most of the infrastructure is in place.

In fact, I have been kicking around the idea of a CFS-based (non-real-time) Litmus plugin just so I can get Litmus's periodic task features and API, but still use the standard Linux CFS scheduler.  This could make comparisons of application performance under Litmus vs. Linux much easier since no changes in user-level application code are necessary.  I'm not sure that such a plugin is viable though; I haven't explored beyond thinking that it would be a neat feature to have.

-Glenn





More information about the litmus-dev mailing list