Rui Nuno Capela wrote:
Robin Gareus wrote:
> Rui Nuno Capela wrote:
>
>> this issue on 2.6.31-rt has been already reported privately and i'll get
>> to it as soon i get back home from vacation. meanwhile, it really looks
>> like a regex trickery is all that's needed,
> I'm not so sure, Since 2.6.31 it is also possible to raise the priority
> not by IRQ number but by /device-driver/.
>
> ie:
> PID CLS RTPRIO NI PRI %CPU STAT COMMAND
> 9092 FF 89 - 129 0.4 S< irq/17-HDA Inte
> 1447 FF 50 - 90 0.1 S< irq/17-uhci_hcd
> 9093 FF 50 - 90 0.0 S< irq/17-ohci1394
>
> ..but of course that's also just regexp trickery ;)
>
> Note that the kernel limits the IRQ process name to 15 chars.
> "HDA Inte" won't read "HDA Intel" even when using `ps -w..`
>
> But '/proc/interrupts' says:
> 17: 17215454 873204 IO-APIC-fasteoi uhci_hcd:usb3, HDA Intel,
> ohci1394
>
>> keeping in mind that
>> backward compability with pre-2.6.31-rt kernels is in order (eg. i do
>> still run on 2.56.29.5-rt22 for which the current rtirq script is
>> perfect, of course)
>> as a quick suggestion, try this for instance (re. line 120):
>> PIDS=`ps -eo pid,comm | egrep "(IRQ.${IRQ}|irq\/${IRQ}\-.+)\$" | awk
>> '{print $1}'`
> That works, but raises all devices on a given IRQ-line and results in:
> PID CLS RTPRIO NI PRI %CPU STAT COMMAND
> 1447 FF 88 - 128 0.1 S< irq/17-uhci_hcd
> 9092 FF 87 - 127 0.4 S< irq/17-HDA Inte
> 9093 FF 86 - 126 0.0 S< irq/17-ohci1394
>
which is the exact and old behavior of rtirq for kernel-rt < 2.6.31-rt.
this time however it looks that you can actually improve things when
several device drivers are hanging on a irq line. that is, one can tune
up the one and only the one actually intended (eg. "snd" =>
"irq/17-HDA
Inte" and nothing else)
not just a simple regex oneliner anymore and i'm afraid it might need a
deeper retouch...
not so deeper, more than a simple regex fix but some bash trickery now
added: please, try the attached patch (rtirq-20090807-1.diff) and tell ;)
Almost - it fails because "HDA Inte" has a space in it. So
${NAME2} is only "HDA" instead of "HDA Intel".
I've added quotation marks around ${NAME2} to the rtirq_exec_num and
rtirq_exec_name function calls (line 167 and line 231) and then it works.
However, there's still an issue with RTIRQ_TRAIL. If one wants to raise
two drivers on the same IRQ line. For example
"HDA Intel" and "ohci1394" but not uhci_hcd:usb3 (all on IRQ 17
here)
rtirq will only do the first device and skip the remaining.
Thanks for your help, it must be fun to code on the beach ;)