You are here

rtirq update - 2015 edition

just in time for the mardi gras, rtirq has been updated ;)

http://www.rncbc.org/archive/#rtirq

original packages are available:

rtirq-20150216.tar.gz
rtirq-20150216-35.src.rpm
rtirq-20150216-35.noarch.rpm

DISCLAIMER: rtirq only makes sense on PREEMPT_RT or threadirqs enabled kernels (>= 2.6.39).

cheers && enjoy

Comments

Hi Rui, I was looking for any changelog or what's new to check what have been changed from the last version. Do you have any pointer for me ?
Thanks for your work.
Olivier

rncbc's picture

not much of a changelog but the rpm spec file has something of the sort: lines from it are literally pasted here as follows:

$ rpm -q --changelog rtirq
* Mon Feb 16 2015 Rui Nuno Capela 
- Added "xhci_hcd" (USB 3.x) to "usb" keyword roster.
- Removed (old) "rtc" from default config list.
- Version 20150216.

...

hth.
cheers

Awesome. Thanks for the answer and the software Rui.
Cheers.

What is the reason behind the removal or rtc from default config list?
I am using the linux-rt kernel 3.18.9-rt5-1-rt from archlinux aur.
Without rtc as first item usb priority could be higher than rtc0 priority

rncbc's picture

main reason is that rtc is seldom used if at all on modern kernels and applications.

check /proc/interrupts for IRQ line 8 (rtc0) ... how many times does a cpu, any cpu core, is being interrupted by rtc ? probably only once on just a single core due on system boot, so making the rtc irq service thread on highest priority has been a pure waste of scheduler real-time priority queue range. whatever.

hth.
cheers

How to assign priority only to single USB port? Do you confirm that this is working with last version? Example:
RTIRQ_NAME_LIST="usb6"

I have some reports about problems.

rncbc's picture

yes, i believe that's still the way to go.

what problems are you having to report?

Thi is the report
1) with RTIRQ_NAME_LIST="rtc usb2 eno1"

RTPRIO PRI COMMAND
93 133 irq/25-xhci_hcd
90 130 irq/8-rtc0
80 120 irq/28-eno1
50 90 irq/9-acpi
50 90 irq/12-i8042
50 90 irq/1-i8042
50 90 irq/16-ehci_hcd
50 90 irq/26-0000:00:
50 90 irq/23-ehci_hcd
50 90 irq/27-mei_me
50 90 irq/29-i915

2) with RTIRQ_NAME_LIST="rtc xhci_hcd eno1"

RTPRIO PRI COMMAND
90 130 irq/8-rtc0
85 125 irq/25-xhci_hcd
80 120 irq/28-eno1
50 90 irq/9-acpi
50 90 irq/12-i8042
50 90 irq/1-i8042
50 90 irq/16-ehci_hcd
50 90 irq/26-0000:00:
50 90 irq/23-ehci_hcd
50 90 irq/27-mei_me
50 90 irq/29-i915

This is strange, since in the first case xhci_hcd should be at 85 priority, if RTIRQ_PRIO_DECR=5
The second case is correct.

rncbc's picture

weird that something is ever getting an rtprio higher than 90 if not listed in RTIRQ_HIGH_LIST :S

show us your `cat /proc/interrupts`, please?

This is the output

​           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7                                          
  0:         37          0          0          0          0          0          0          0   IO-APIC-edge      timer
  1:          2          0          0          0          0          0          0          0   IO-APIC-edge      i8042
  8:          0          0          0          0          0          0          1          0   IO-APIC-edge      rtc0
  9:          0          0          0          0          1          1          0          1   IO-APIC-fasteoi   acpi
 12:          2          0          0          0          1          0          1          0   IO-APIC-edge      i8042
 16:         23          0          1          0          0          4          1          0   IO-APIC  16-fasteoi   ehci_hcd:usb1
 23:          0         13          2          1          0          1          0         16   IO-APIC  23-fasteoi   ehci_hcd:usb4
 25:    2750941     141347     150979      94319     187675     113210      92911      43683   PCI-MSI-edge      xhci_hcd
 26:      21274      13051       6333       3924      12755      10667       4150       3018   PCI-MSI-edge      0000:00:1f.2
 27:          2          0          0          0          2          0          3          5   PCI-MSI-edge      mei_me
 28:     231714      62723      32365      14787      51218      52583      17436      11550   PCI-MSI-edge      eno1
 29:        518         11         24          8        668         39         75         19   PCI-MSI-edge      i915
NMI:        242        129        166        177        194        116        153        153   Non-maskable interrupts
LOC:   26316118   26374141   26332646   26329023   26257279   26268071   26271780   26285810   Local timer interrupts
SPU:          0          0          0          0          0          0          0          0   Spurious interrupts
PMI:        242        129        166        177        194        116        153        153   Performance monitoring interrupts
IWI:          0          0          0          0          0          0          0          0   IRQ work interrupts
RTR:          1          0          0          0          0          0          0          0   APIC ICR read retries
RES:      15720      49372      30005      25011       7885      16587       9782       6651   Rescheduling interrupts
CAL:        977        961        966        952        965        943       1003       1034   Function call interrupts
TLB:        288        342        282        270        194        214        171        143   TLB shootdowns
TRM:          0          0          0          0          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0          0          0          0          0   Threshold APIC interrupts
MCE:          0          0          0          0          0          0          0          0   Machine check exceptions
MCP:         89         89         89         89         89         89         89         89   Machine check polls
HYP:          0          0          0          0          0          0          0          0   Hypervisor callback interrupts
ERR:          0
MIS:          0
rncbc's picture

where's "usb2" up there ?

is it something that haven't plugged in yet?

byee

Yes, there is not usb2 in /proc/interrupts but a
cat "/proc/asound/card"$i"/usbbus" | rev | cut -b5
with the right value in $i
is giving 2

The same searching /sys directory with
find /sys/devices -type d -name "usb2"

Since rtirq is using /proc/interrupts, it cannot connect usb2 to the right device.
Probably this is correct, but it seems to me that the usb(x) method is not generally applicable.

The default configuration file puts snd before usb. At least on my laptop, this results my onboard sound card getting higher priority than my USB sound card. I'm presuming the most common use of this script is to raise the priority of USB sound cards, so would it be better to have the default config put usb before snd?

I tried to install the RPM from your site on Fedora 22 but it won't install because it requires sysvinit-tools, which is not available on Fedora.

I have filed a bug on Fedora's bug tracker noting the rtirq package is out of date: https://bugzilla.redhat.com/show_bug.cgi?id=1234062

Add new comment