lkml.org 
[lkml]   [2009]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: RFC for a new Scheduling policy/class in the Linux-kernel

    Chris Friesen wrote:
    > Douglas Niehaus wrote:
    >
    >
    >> (1.1) Will the use of system services (system calls) by RT threads
    >> need to be explicitly supported by, perhaps, explicitly making the
    >> schedulers of *other* threads also using those system calls aware of
    >> that and take it into account to make those other tasks non-preemptible
    >> while holding system call related locks.
    >>
    >> (1.2) Can Linux SMP ever support this in an acceptable manner since
    >> locks associated with systems services are shared across CPU boundaries.
    >> THus, I can isolate a set of RT tasks on a CPU easily, and they are well
    >> isolated and can run under strict predictability, *until they use a
    >> system call that uses a lock*. Then, the system call is an interaction
    >> channel with every other thread on the system using the same system call.
    >>
    >
    >
    > This may be a terminology issue, but I think it would be more correct to
    > say that the lock is the interaction channel, not the system call, and
    > it is an interaction channel with every other entity on the system using
    > the same lock. Depending on the specific lock, this could be other
    > userspace tasks, kernel threads, or even hardware interrupt handlers.
    >
    >
    Sorry, sloppiness on my part while typing quickly, resulting in the
    terminolgy problem of --- my using the wrong terminology.

    Yes, the lock, is the interaction channel.

    Admittedly, which locks are the interaction channels is correlated with
    which system services are used by threads, but sometimes more and
    sometimes less strongly correlated.

    When I explain it to less expert audiences than this, I tend to talk in
    terms of the system services because they at least know what some of
    them are, while many have no idea what the concurrency control in the
    kernel is. They can fairly easily see that if RT tasks use a range of
    services used by generic Linux tasks, then some interaction between RT
    and non-RT tasks is a result.

    Still, no excuses, only explanation. Sorry to have over-simplified to
    this audience.

    Thanks for clarifying.
    > This goes back to your first question of which system services an RT
    > task can use while maintaining schedulability analysis. Unfortunately
    > this may be a moving target, since the exact answer depends on what
    > locks are taken in the underlying kernel implementation.
    >
    > Chris
    >
    Yes. This is true and is also the point I was trying to make. When
    talking to people about RT over the years I have observed that it is
    often hard to communicate the full cost of the predictability required
    for RT tasks

    Extremely detailed information is required, and getting it can be
    expensive. This is one reason why supporting RT in Linux proper is even
    harder than it first appears.

    However, I think that while completely arbitrary use of Linux system
    services by RT tasks is extremely complicated, many RT applications can
    be happy using only a small subset of services, and so various classes
    of applications can be supported successfully with merely extreme
    effort, as opposed to completely insane effort.

    It is a really hard problem, no doubt, though.

    Doug



    \
     
     \ /
      Last update: 2009-07-14 09:47    [W:3.170 / U:0.560 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site