ksummit.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Tim Bird <tim.bird@sonymobile.com>
To: <ksummit-discuss@lists.linuxfoundation.org>
Subject: Re: [Ksummit-discuss] [TECH TOPIC] Mainlining PREEMPT_RT
Date: Wed, 14 Oct 2015 12:30:21 -0700	[thread overview]
Message-ID: <561EAD4D.6080901@sonymobile.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1510141345540.13663@east.gentwo.org>



On 10/14/2015 11:56 AM, Christoph Lameter wrote:
> On Wed, 14 Oct 2015, Steven Rostedt wrote:
> 
>> If PREEMPT_RT is not the way to go, then why did several companies just
>> invest into getting it mainlined?
> 
> I guess they want "realtime" support. Better talk to them what they mean
> by realtime. I have never seen a real use case for PREEMPT_RT. Instead a
> lot of high level "realtime" talk and disappointment when they found out
> what the real constraints and limitations are.
> 
>> Again, real-time does not mean real-fast. How do you handle priority
>> inversion? How do you handle outliers? Which the Linux kernel has many
>> huge outliers if things are not handled correctly, which PREEMPT_RT
>> solve (making it, by the way, a hard real time design).  If you can
>> accept a single outlier, then that's soft real-time, and you are
>> talking about something completely different.
> 
> You could put the processing for the stuff that creates outliers on a
> different cpu? Layout the processing in such a way to guarantee no
> outliers on the "realtime" processors?
> 
>> Hard real-time is about worse case latency, not the average latency.
>> That's called "soft real-time"
> 
> Of course. Thats why I suggested combining it with the NOHZ appraoch. Put
> the pieces that can create outliers on cpus not used for "realtime"
> threads. Ensure that what is running on a hard realtime cpu can complete
> in a defined timed interval.
> 
> Realtime is about guarantees of a response in a certain time period. That
> is why "soft realtime" is not making much sense. There is no guarantee
> anymore. Just more overhead. OS processing slows down due to the
> sprinkling of preempt code but the timing guarantees that one seeks can be
> violated. Increasing the processing overhead may increase the number of
> failures to process a given task in a time period that one wants
> guaranteed. So better run without preempt in order to have a higher chance
> to finish in time? That is at least what my industry has decided to do.

This debate is as old as the hills. I remember having it in 2000 with
various parties, when talking about what used to be called the "dual-kernel"
approach.

> But we really wish we had a hard realtime capability if we must respond in
> a certain time period. Sadly there is no solution in sight right now.

Check out Xenomai. (xenomai.org)  I think that's what many embedded folk use
if they find that RT-PREEMPT does not meet their needs.  Xenomai 3.0
allows you to use their system either on top of RT-PREEMPT or
on top of their Cobalt kernel sitting next to (or in front of,
depending on your perspective) the Linux kernel.

Sony used RT-PREEMPT in some products, and a dual-kernel in others,
and isolated CPUs running something else (usually uItron) in yet others.

Personally, I'd be happy to see RT-PREEMPT go in - there are certain use
cases for it.  I'd also like to see the NOHZ stuff go in as well.  It should
solve a set of problems for isolating RT tasks without sacrificing
performance on the non-RT CPUs.  And finally, I wouldn't mind putting
a non-Linux RT kernel like Cobalt (oh the horrors) into mainline as well.
Each of these approaches has their strengths and weaknesses.  Linux is,
after all, whatever we say it is - and it could easily have a small RT
micro-kernel as part of the source base as well.

AFAIK the patent issues that plagued the dual-kernel approach are now
behind us, so this might be a good area of investigation.

I've long felt that RT-PREEMPT was sucking the oxygen out of getting other,
technically valid, approaches to RT with Linux into mainline.
 -- Tim

  parent reply	other threads:[~2015-10-14 19:30 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-13 16:42 Steven Rostedt
2015-10-13 17:33 ` Josh Triplett
2015-10-13 22:40 ` Rafael J. Wysocki
2015-10-13 22:19   ` Luis R. Rodriguez
2015-10-13 22:39     ` Steven Rostedt
2015-10-13 22:48       ` Luis R. Rodriguez
2015-10-13 23:04     ` Rafael J. Wysocki
2015-10-13 22:41       ` Luis R. Rodriguez
2015-10-14  7:35 ` Linus Walleij
2015-10-14 11:45 ` Christoph Lameter
2015-10-14 13:20   ` Steven Rostedt
2015-10-14 14:49     ` Christoph Lameter
2015-10-14 15:22       ` Steven Rostedt
2015-10-14 18:12         ` Christoph Lameter
2015-10-14 18:32           ` Steven Rostedt
2015-10-14 18:56             ` Christoph Lameter
2015-10-14 19:17               ` James Bottomley
2015-10-14 19:30               ` Tim Bird [this message]
2015-10-15  2:20                 ` Steven Rostedt
2015-10-15  9:05                 ` Thomas Gleixner
2015-10-14 20:24               ` Thomas Gleixner
2015-10-15 14:22                 ` Christoph Lameter
2015-10-15 15:13                   ` Steven Rostedt
2015-10-15 17:21                     ` Jan Kara
2015-10-15 18:09                       ` Steven Rostedt
2015-10-15 20:21                   ` Thomas Gleixner
2015-10-15 20:37                     ` Thomas Gleixner
2016-08-05 22:32 ` Darren Hart
2016-08-05 22:40   ` Darren Hart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=561EAD4D.6080901@sonymobile.com \
    --to=tim.bird@sonymobile.com \
    --cc=ksummit-discuss@lists.linuxfoundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox