2006-12-19 20:52:45

by Remy Bohmer

[permalink] [raw]
Subject: [BUG+PATCH] RT-Preempt: IRQ threads running at prio 0 SCHED_OTHER

Hello Ingo,

I am using your yum-distributed kernel 2.6.19.1-rt15, and
unfortunately I experienced very worse latencies.
It turned out that ALL the IRQ threads were all running at prio 0, SCHED_OTHER.

Looking at the current code in kernel/irq/manage.c, the goal was to
put them at MAX_RT_PRIO, but the call to sys_sched_setscheduler()
fails with EINVAL. I have attached a patch to set them to
(MAX_RT_PRIO-1). This works.

Further I believe that each application of the RT-kernel requires a
different configuration of these thread-priorities and I prefer to
reconfigure these prios from userland during boot. As these
threadnames contain whitespaces in its name, they make the
shell-scripts unnecessary complex that I use to reconfigure the thread
priorities.
So, I would prefer a slight modification of the names: The attached
patch also changes the names from [IRQ nn] to [IRQ-nn]. I hope that
you agree with me here. (If not, I stick to do this patch each time
myself ;-) )

Kind Regards,

Remy B?hmer


Attachments:
(No filename) (0.98 kB)
fix-kernel-irq-thread-prio.patch (803.00 B)
Download all attachments

2006-12-19 21:27:28

by Ingo Molnar

[permalink] [raw]
Subject: Re: [BUG+PATCH] RT-Preempt: IRQ threads running at prio 0 SCHED_OTHER


* Remy Bohmer <[email protected]> wrote:

> Hello Ingo,
>
> I am using your yum-distributed kernel 2.6.19.1-rt15, and
> unfortunately I experienced very worse latencies. It turned out that
> ALL the IRQ threads were all running at prio 0, SCHED_OTHER.
>
> Looking at the current code in kernel/irq/manage.c, the goal was to
> put them at MAX_RT_PRIO, but the call to sys_sched_setscheduler()
> fails with EINVAL. I have attached a patch to set them to
> (MAX_RT_PRIO-1). This works.

oops - my intention was to set all IRQs and softirqs to SCHED_FIFO prio
50. I have fixed that now in my tree.

prio 99 is pretty extensive and makes it hard to move tasks 'above'
hardirq priority, without setting the priority of /every/ IRQ thread. So
i picked SCHED_FIFO:50 - at exact half way.

> Further I believe that each application of the RT-kernel requires a
> different configuration of these thread-priorities and I prefer to
> reconfigure these prios from userland during boot. As these
> threadnames contain whitespaces in its name, they make the
> shell-scripts unnecessary complex that I use to reconfigure the thread
> priorities.

ok - lets try it. Clark: does this impact the set_kthread_prio utility?
I've changed "IRQ 123" to "IRQ-123" to make pidof & friends work better.

Ingo

2006-12-19 21:38:43

by Clark Williams

[permalink] [raw]
Subject: Re: [BUG+PATCH] RT-Preempt: IRQ threads running at prio 0 SCHED_OTHER

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

Ingo Molnar wrote:
>
> ok - lets try it. Clark: does this impact the set_kthread_prio utility?
> I've changed "IRQ 123" to "IRQ-123" to make pidof & friends work better.

Yes it does, but I believe I can fix that. Most of the logic is in awk
and I believe one call to sub() will handle the change.

Clark
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFFiFutHyuj/+TTEp0RAjKlAKCaVK8hf4jY6ZUIZ0Ixc56lhSUcHgCgoqT0
HiDbdVXrwY/LYlZN7AFwHOI=
=1YgX
-----END PGP SIGNATURE-----