Preemption of the OS system call due to expiration of the time-sl ice for: a) SCHED_NORMAL (aka SCHED_OTHER) b) SCHED_RR

From: Povolotsky, Alexander (Alexander.Povolotsky_at_marconi.com)
Date: 06/30/04

  • Next message: Georg Chini: "pdflush uses all cpu-time with 2.6.7 and slow media"
    To: "'linux-kernel@vger.kernel.org'" <linux-kernel@vger.kernel.org>
    Date:	Wed, 30 Jun 2004 05:50:33 -0400
    
    

    Con - thanks for your kind answers !

    Preemption (due to the expiration of the time-slice) of the process, while
    it executes OS system call, - by another process (of equal or higher
    priority) when running under following scheduling policies:

     a) SCHED_NORMAL (aka SCHED_OTHER)
     b) SCHED_RR

    Is it possible in Linux 2.6 ? Linux 2.4 ?

    Thanks,
    Best Regards,
    Alex Povolotsky

    -----Original Message-----
    From: Con Kolivas [mailto:kernel@kolivas.org]
    Sent: Tuesday, June 29, 2004 6:53 PM
    To: Povolotsky, Alexander
    Cc: 'linux-kernel@vger.kernel.org'; 'andrebalsa@altern.org'; 'Richard E.
    Gooch'; 'Ingo Molnar'; 'rml@tech9.net'; 'akpm@osdl.org'
    Subject: Re: Linux scheduler (scheduling) questions

    Povolotsky, Alexander writes:

    > I have "general" Linux OS scheduling questions, especially with
    regards
    > as those apply to the (latest) Linux 2.6 scheduler features (would
    really
    > appreciate if whether/when/while answering those questions listed below,
    > you could pinpoint differences between Linux 2.6 and Linux 2.4 !):
     
    > 0. I was told that the Linux kernel could be configured with one of the 3
    > (? ) different scheduling policies - could someone describe
    > those to me in details ?
    > 2. Linux 2.6 (I was told it is the same for Linux 2.4.21-15) has
    priorities
    > 0-99 for RT priorities and 100-139 for normal (SCHED_NORMAL) tasks.

    > I presume that priorities 0-99 are "recommended" (or enforced ?) for
    > Linux kernel "native" tasks ... and "out or reach" for application
    > tasks (unless one dares to merge application into the Linux kernel,
    > masquerading it as a "system level command" - did anyone tried this ? -
    > I presume it is not recommended ... ) ?

    Three different policies are currently supported:
    SCHED_NORMAL (also known as SCHED_OTHER) has a soft priority mechanism
    over the 'nice' range of -20 to +19 (static priority of 100-139) which
    decides according to the priority which task goes first, and how much
    timeslice it gets. This system dynamically alters the priority to allow
    interactive tasks to go first, and is designed to prevent starvation of
    lower priority tasks with an expiration policy.

    SCHED_RR is a fixed real time policy over the static range of 0-99 where a
    lower number (higher priority) task will repeatedly go ahead of _any_ tasks
    lower priority than itself. It is called RR because if multiple tasks are at

    the same priority it will Round Robin between those tasks.

    SCHED_FIFO is a fixed real time policy the static range of 0-99 where a
    lower number (higher priority) task will repeatedly go ahead of _any_ tasks
    with lower priority than itself. Unlike RR, if a task does not give up the
    cpu it
    will run indefinitely even if other tasks are the same static priority as
    itself.

    Unprivileged users are not allowed to set SCHED_RR or SCHED_FIFO because of
    the real risk of these tasks causing starvation.

    > 1. How rescheduling is "induced" in above scheduling policies ?
    > Does at least one of above mentioned scheduling policies uses "clock
    > tick" as a scheduling event ?

    Preemption is built into this mechanism where any higher priority task will
    preempt the current running task at any time. SCHED_NORMAL tasks have a
    timeout policy based on scheduler_tick that allows other tasks of the same
    priority to run and considers that task for expiration. SCHED_RR tasks have
    a timeout policy also based on scheduler tick that allows tasks of the same
    priority to run. SCHED_FIFO tasks never time out.

    > Under what priority the OS system calls are executed ?

    The kernel threads run at different priorities dependent on what they do.
    Run 'top -b -n 1' and you'll see a list of different tasks with the name k*
    that are kernel threads. On SMP systems, the migration thread is SCHED_FIFO
    priority 0 which means it always goes ahead of everything else. The rest of
    the kernel threads vary between SCHED_NORMAL 'nice' -20 to +19 (static
    priority 100-139).

    > 3. Is priority inversion and its prevention (priority inheritance or
    > priority ceilings) applicable to Linux ) for application/user-space tasks
    (
    > with priorities in the range 100-139) ?

    There is no intrinsic mechanism in the kernel to prevent priority inversion.

    Generic anti-starvation mechanims minimise the harm that priority inversion
    can do but there can be a lot of wasted cpu cycles for poorly coded
    applications. This is more true of 2.6 than 2.4 because the cpu scheduler
    does far more 'out of order' scheduling where a task can run many many times

    dependent on priority before another task will ever run.

    Hope this helps,
    Cheers,
    Con

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


  • Next message: Georg Chini: "pdflush uses all cpu-time with 2.6.7 and slow media"

    Relevant Pages

    • Re: Sharing the timeslice
      ... PTHREAD_SCOPE_SYSTEM threads for the CPU. ... scheduling policy and the thread's priority. ... Priorities and Scheduling Policy ...
      (comp.arch.embedded)
    • Re: Wiseman and McGhie are Ranting Again
      ... of which is the clock tick that expires a time slice interval. ... > Then we can start playing around with Thread Priority. ... I think you are comparing pre-emptive and co-operative scheduling. ... then falls quiet and calls its Idle Loop. ...
      (microsoft.public.mac.office.word)
    • Re: Rate Monotonic Scheduling (RMS) vs. OS Scheduling
      ... one because almost everyone uses static priority for real time. ... RMS scheduling requires that the cpu only be loaded to some ... The problem with EDT is that it requires dynamic scheduling as ... The problem of EDF is also that you need to know who is the earliest ...
      (comp.arch)
    • Re: Rate Monotonic Scheduling (RMS) vs. OS Scheduling
      ... one because almost everyone uses static priority for real time. ... RMS scheduling requires that the cpu only be loaded to some maximum, ... The problem of EDF is also that you need to know who is the earliest ...
      (comp.arch)
    • Re: [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU_RATIO feature
      ... > i dont really like it - it's really the wrong interface to use. ... domain have priority relative to each other. ... FIFO task could actually be a scheduling sub-domain (which appears to be a ... In that scheduling sub-domain would be all the ...
      (Linux-Kernel)