lkml.org 
[lkml]   [2011]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: Changing Kernel thread priorities
    From
    Hi All,

    2011/6/7 Peter Zijlstra <peterz@infradead.org>:
    > On Tue, 2011-06-07 at 11:40 +0200, Armin Steinhoff wrote:
    >> Hi,
    >>
    >> when I read all these confusing statements here ( in german it looks
    >> like an "Eiertanz")  ... I can only say:
    >>
    >> - do the basic stuff in a minimal kernel driver
    >> - use UIO (or VFIO for PCI devices)
    >
    > I see no requirement for any of those horrid things to be used. You can
    > write a full on proper kernel driver, it just cannot set kernel thread
    > priorities to a sane value (let them all default to 50 or so).
    >
    > Then have a user space script or whatever set the kthread priorities.
    >> and you get clean control about your real-time priorities.
    >> I think changing the priorities of "interrupt threads" inside the kernel
    >> could lead to strange race conditions in the kernel.

    Well, I 100% agree that it must be under full userspace control to be
    able to set the priorities. But, the kernel default assumption of
    starting everything at 50 is wrong as well.
    Imagine the following situation:
    * Realtime application is running and has threads active in the range
    of prios 20 - 90.
    * Now bring up a network device, it immediately starts spamming the
    system at prio 50 _before_ you have the chance to set it below 20 by
    means of chrt.
    * RT behaviour is gone!

    So, in that case and in many other hotplug cases, you ruin the RT
    behaviour of the system just by the
    default-50-is-probably-right-assumption of the kernel.
    For systems where you have everything under control as a user/system
    designer, hotplug can also be under control as well.

    To solve this we have the patchset in use as attached to this mail. It
    is a newer version of the old set mentioned earlier in this mail
    thread.
    The opinion of Thomas about this subject is quite clear so I will not
    post it as a cleaned up patchset, although I believe we reworked all
    his previous major remarks about this set.

    For everyone else who can do something useful with it: go ahead. It
    should apply to 2.6.33.9-rt31
    It creates entries in /proc/irq for you to setup the priorities after
    booting. (/proc/irq/hirq-prio and /proc/irq/sirq-prio), but also per
    driver in /proc/irq/<irq-id>/<name>/irqprio
    In /proc/irq/[hs]irq-prio you can, for example, enter the following text:
    * at91_udc:22,ohci_hcd:usb1:22,atmel_spi:22,33

    This results in:
    * starting the at91_udc at prio 22
    * starting ohci:usb1 also at prio 22
    * atmel_spi at 22
    * overall default moved from 50 to 33

    Kind regards,

    Remy
    [unhandled content-type:application/x-gzip]
    \
     
     \ /
      Last update: 2011-06-07 13:05    [W:0.023 / U:29.748 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site