Re: [LAD] rtirq script is broken with 2.6.31

From: Robin Gareus <robin@email-addr-hidden>
Date: Fri Aug 07 2009 - 17:40:08 EEST

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Rui Nuno Capela wrote:
> 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 ;)

robin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEARECAAYFAkp8PMgACgkQeVUk8U+VK0JZLQCglDnGMW+a08JISJQ2h3cGWd+O
KtMAoK/0bjsKxCI+S0OqHvqHU73YkznN
=/rpF
-----END PGP SIGNATURE-----
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev
Received on Fri Aug 7 20:15:04 2009

This archive was generated by hypermail 2.1.8 : Fri Aug 07 2009 - 20:15:04 EEST