[LITMUS^RT] new patches and new branch

Glenn Elliott gelliott at cs.unc.edu
Tue Jun 25 16:52:17 CEST 2013


On Jun 25, 2013, at 12:54 AM, Björn Brandenburg <bbb at mpi-sws.org> wrote:

> Hi everyone,
> 
> a quick heads-up: I've merged four patches into staging (see below). Some of them stem from our OSPERT project and fix latency issues when measuring latencies with cyclictest.
> 
> Further, there's a new branch called  'rebased-3.0'.
> 
> 	https://github.com/LITMUS-RT/litmus-rt/commits/rebased-3.0
> 
> This branch contains the same features / patches as staging, but has been rebased cleanly on top of v3.0 (based on an earlier patch series by Felipe). This is the first step towards porting LITMUS^RT to a new kernel version, and eventually to PREEMPT_RT. Please check it out if you have some time.
> 
> Thanks,
> Björn
> 
> 
> commit c1f183501ce70a510a4d9ab98595500904f33705
> Author: Bjoern Brandenburg <bbb at mpi-sws.org>
> Date:   Sat Jun 8 18:22:35 2013 +0200
> 
>    Augment rt_task() with is_realtime()
> 
>    Whenever the kernel checks for rt_task() to avoid delaying real-time
>    tasks, we want it to also not delay LITMUS^RT tasks.  Hence, most
>    calls to rt_task() should be matched by an equivalent call to
>    is_realtime(). This patch fixes a few places where this was missing.
>    Notably, this affects the impolementation of select(), which uses
>    timer_slack_ns when setting up timers for non-real-time tasks.
> 
> commit 5e5d22d9724a5bc11d459c4f08d475941c2482ed
> Author: Bjoern Brandenburg <bbb at mpi-sws.org>
> Date:   Sat Jun 8 17:58:41 2013 +0200
> 
>    Disable timer slack for LITMUS^RT tasks in nanosleep()
> 
>    As with SCHED_FIFO/SCHED_RR tasks, artificial latency is not
>    desired...
> 
> commit 12dab1d22770b58ae174c46dc292a4dfb0e01452
> Author: Bjoern Brandenburg <bbb at mpi-sws.org>
> Date:   Sat Jun 8 12:22:59 2013 +0200
> 
>    GSN-EDF: link tasks to local CPU if it is idle
> 
>    If a task is released on a CPU that is idle, then it is pointless to
>    send an IPI to another CPU just to schedule the newly released task.
>    This patch changes check_for_preemptions() to prefer the local CPU
>    first if it is idle.
> 
> commit b46ddf5d187d603f72389ac047a99e80edb6285d
> Author: Bjoern Brandenburg <bbb at mpi-sws.org>
> Date:   Thu May 30 14:34:22 2013 +0200
> 
>    Use vmalloc() to allocate Feather-Trace buffers
> 
>    Allocating contiguous buffers with kmalloc() is subject to severe
>    maximum size limits. For Feather-Trace to work, we don't actually need
>    *physically* contiguous memory; virtually contiguous memory is
>    sufficient. By switching to vmalloc(), the code gets simpler and we
>    can support much larger buffers.
> 
>    For convenience, this patch also adds a configuration option for
>    the desired Feather-Trace buffer size and increases the default
>    size.


Looks like a nice set of patches!  I was looking at timer slack in select() yesterday---I'm glad to find that someone has already done the necessary critical thinking and work!

Questions about the GSN-EDF link changes: Do you have any empirical data on how this changes average case preemption/migration costs in comparison to the affinity-aware linking?  Does it make sense to avoid an IPI if it means migrating across a CPU socket?  It seems we should be chasing after improved average-case behavior here because I don't believe this latest patch changes schedulability analysis formulas---just possibly the values we plug in.

Also, going forward, how do you feel about committing to keeping C-EDF in sync with GSN-EDF?  I'd be happy to port any patches from GSN-EDF to C-EDF since I appear to be its primary user.

Thanks,
Glenn






More information about the litmus-dev mailing list