[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