Version 3 (modified by ppalmers, 16 years ago)
--

IRQ Priorities

  • Setting the scheduling priority of the IRQ handler on it's own is not enough to ensure proper operation. Since most of the actual work that has to be done to respond to an IRQ is done in a tasklet, one should also ensure that the priority of the softirq-tasklet processes is high enough. Otherwise tasklets are not executed in time. This has been experimentally verified.
  • Example rtirq config (/etc/sysconfig/rtirq)
    #!/bin/sh
    #
    # Copyright (c) 2004-2006 rncbc aka Rui Nuno Capela.
    # All rights reserved.
    #
    # /etc/sysconfig/rtirq
    #
    # Configuration for IRQ thread tunning,
    # for realtime-preempt enabled kernels.
    #
    
    # IRQ thread service names
    # (space separated list, from higher to lower priority).
    RTIRQ_NAME_LIST="rtc ohci1394 snd i8042"
    
    # Highest priority.
    RTIRQ_PRIO_HIGH=80
    
    # Priority decrease step.
    RTIRQ_PRIO_DECR=10
    
    # Whether to reset all IRQ threads to SCHED_OTHER.
    RTIRQ_RESET_ALL=1
    
    # On kernel configurations that support it,
    # which services should be NOT threaded
    # (space separated list).
    RTIRQ_NON_THREADED="rtc snd"
    
    # Process names which will be forced to the
    # highest realtime priority range (99-91)
    # (space separated list, from highest to lower priority).
    RTIRQ_HIGH_LIST="softirq-timer softirq-hrtimer softirq-tasklet"