lkml.org 
[lkml]   [2004]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    Subject[patch] voluntary-preempt-2.6.8-rc2-M5

    i've uploaded the latest version of the voluntary-preempt patch:

    http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.8-rc2-M5

    the biggest change is that i've integrated the irq threads code from
    Scott Wood. I've done a number of usability enhancements:

    added a new mechanism for finegrained configuration of threadedness /
    nonthreadedness at the handler level: there are new:

    /proc/irq/<N>/<handler>/threaded

    entries that control this behavior. Writing 0 to such an entry makes
    that particular handler 'directly executed', writing 1 to it turns it
    back to be handled by its own IRQ kernel thread.

    E.g. the following command changes the serial line interrupt back to
    non-threaded:

    echo 0 > /proc/irq/*/serial/threaded

    the IRQ threads show up at low PID numbers (typically between 100 and
    200) and their RT priority can be set via the 'chrt' utility (part of
    schedutils). E.g. setting IRQ 10's irq thread priority back to the
    non-RT SCHED_OTHER class can be done via:

    chrt --other --pid 0 `pidof 'IRQ 10'`

    and to change IRQ 4's thread to SCHED_FIFO and the highest RT priority:

    chrt --fifo --pid 99 `pidof 'IRQ 4'`

    to get good audio latencies i'd suggest to set the the audio driver's
    and the RT-clock driver's IRQ handler to be non-threaded, and to set
    jackd's RT priority to higher than 50 (which is the default of the IRQ
    threads).

    But it would also be interesting to see how the maximum latencies look
    like if both the RT-clock and the audio handlers are threaded, and the
    two affected IRQ threads are set to SCHED_FIFO 99 priority - they should
    preempt everything. The latency increase compared to the 'direct' setup
    should show us the real-life overhead of hardirq redirection.

    the patch also changes the way the IDE latencies are avoided: based on
    suggestions from Jens the latency-critical portion of the driver is now
    done without holding ide_lock - and this makes the driver preemptable if
    the handler is running in a thread.

    if booting with voluntary-preempt=2/0/1 (the default is 3) then all
    interrupts default to being non-threaded. Note that the /proc entries
    can be used to turn threadedness back on even in this case - this can be
    used to debug problematic drivers.

    i made the irq-threads code work on SMP too: the IRQ threads now bind
    themselves according to the value of /proc/irq/<N>/smp_affinity and
    change the binding of that value is modified. IRQ threads only migrate
    when it's safe - there will be no migration to another CPU while
    executing a hardirq.

    Ingo
    -
    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/

    \
     
     \ /
      Last update: 2005-03-22 14:04    [W:4.668 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site