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 ;)
cheers
--
rncbc aka Rui Nuno Capela
[email protected]
--- rtirq-20090626/rtirq.sh 2009-06-25 23:52:29.000000000 +0100
+++ rtirq-20090807/rtirq.sh 2009-08-07 14:48:48.000000000 +0100
@@ -117,7 +117,7 @@ function rtirq_exec_num ()
# And now do the proper threading prioritization...
if [ -z "`echo ${RTIRQ_TRAIL} | grep :${IRQ}:`" ]
then
- PIDS=`ps -eo pid,comm | egrep "IRQ.${IRQ}\$" | awk '{print $1}'`
+ PIDS=`ps -eo pid,comm | egrep "(IRQ.${IRQ}|irq/${IRQ}-${NAME2:0:8})\$" | awk '{print $1}'`
for PID in ${PIDS}
do
PREPEND="Setting IRQ priorities: ${ACTION} [${NAME2}] irq=${IRQ} pid=${PID}"
@@ -224,10 +224,11 @@ function rtirq_exec ()
case ${NAME} in
snd)
PRI1=${PRI0}
- IRQS=`grep irq /proc/asound/cards | tac | sed 's/.* irq \(.*\)/\1/'`
- for IRQ in ${IRQS}
+ grep irq /proc/asound/cards | tac | \
+ sed 's/\(.*\) at .* irq \(.*\)/\2 \1/' | \
+ while read IRQ NAME2
do
- rtirq_exec_num ${ACTION} ${NAME} ${NAME} ${PRI1} ${IRQ}
+ rtirq_exec_num ${ACTION} ${NAME} ${NAME2} ${PRI1} ${IRQ}
PRI1=$((${PRI1} - 1))
done
;;
@@ -238,7 +239,7 @@ function rtirq_exec ()
;;
*)
rtirq_exec_name ${ACTION} ${NAME} ${NAME} ${PRI0}
- ;;
+ ;;
esac
[ ${PRI0} -gt ${DECR} ] && PRI0=$((${PRI0} - ${DECR}))
done
_______________________________________________
Linux-audio-dev mailing list
[email protected]
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev