All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@domain.hid>
To: rpm@xenomai.org
Cc: xenomai@xenomai.org
Subject: Re: Rép. : Re: [Xenomai-help]  Switch mode with x86
Date: Sun, 03 Dec 2006 22:09:47 +0100	[thread overview]
Message-ID: <45733D1B.7010805@domain.hid> (raw)
In-Reply-To: <1165175999.4952.431.camel@domain.hid>

[-- Attachment #1: Type: text/plain, Size: 3867 bytes --]

Philippe Gerum wrote:
> On Sun, 2006-12-03 at 20:32 +0100, Jan Kiszka wrote:
>> Nicolas BLANCHARD wrote:
>>>>>>> "Nicolas BLANCHARD" <n.blanchard@domain.hid> 29.11 11:25 >>>
>>>> Hello,
>>>>
>>>> I've tested wiith Xenomai 2.3-rc2 (adeos 1.5-02)
>>>> and change the config : 
>>>>                                        - CONFIG_M586
>>>>                                        - disable CONFIG_INPUT_PCSPKR
>>> (it was on module)
>>>>                                        - disable prio boosting (check
>>> CONFIG_XENO_OPT_RPDISALBLE)
>>>> and it seems to work better, one hour without blocking, it's a record
>>>> for me.
>>>>
>>>> So, i will investigate to find which modification improve my problem.
>>> After somes tests (kernel compil), it seems that prio boost is
>>> responsable of my
>>> problem. When it's disable (kernel option checked) my program run
>>> correctly.
>> Confirmed!
>>
>> root@domain.hid :/root# cat /proc/xenomai/sched
>> CPU  PID    PRI      PERIOD   TIMEOUT    STAT       NAME
>>   0  0       99      0        0          R          ROOT
>>   0  837     99      9999312  0          X          TASK1
>>   0  838      0      10999998 0          R          TASK2
>>
>> So far "only" on real hardware (P-I 133) with CONFIG_M586 and (this is
>> likely also very important) CONFIG_PREEMPT. I'm now about to check if I
>> can migrate this problem into qemu and/or capture it with the I-pipe tracer.
>>
> 
> Please also try moving task2 to the SCHED_FIFO class to see if things
> evolve.
> 

Here is the Xenomai scheduling sequence that leads to the deadlock. I
raised the frequency of TASK2 a bit, and this seems to accelerate the
lock-up.

...
> :|  *+[  844] TASK2    1 -5061+   4.436  xnpod_resume_thread+0x48 (gatekeeper_thread+0xf7)
> :|  *+[  827] sshd    -1 -5055+   4.015  xnpod_schedule_runnable+0x45 (gatekeeper_thread+0x12e)
> :|  # [  827] sshd    -1 -5015+   6.646  xnpod_schedule+0x81 (xnpod_schedule_handler+0x17)
> :|  # [  844] TASK2    1 -4981+   3.721  xnpod_schedule+0x81 (xnpod_suspend_thread+0x1e4)
> :|  # [   75] gatekee -1 -4971+   6.451  xnpod_schedule+0x7a2 (xnpod_schedule_handler+0x17)

So far everything is fine. Now the thrilling parts start:

> :|  # [  844] TASK2    1 -2992+   9.954  xnpod_resume_thread+0x48 (xnthread_periodic_handler+0x28)
> :|  # [   75] gatekee -1 -2978!  13.759  xnpod_schedule+0x81 (xnintr_irq_handler+0xec)
> :|  # [  844] TASK2    1 -2955+   7.842  xnpod_schedule+0x7a2 (xnpod_suspend_thread+0x1e4)
> :|  # [  843] TASK1   99 -2858+   7.977  xnpod_resume_thread+0x48 (xnthread_periodic_handler+0x28)
> :|  # [  844] TASK2    1 -2848+   8.466  xnpod_schedule+0x81 (xnintr_irq_handler+0xec)
> :|  # [  843] TASK1   99 -2831+   4.421  xnpod_schedule+0x7a2 (xnpod_suspend_thread+0x1e4)
> :|  # [  843] TASK1   99 -2789+   4.315  xnpod_schedule_runnable+0x45 (xnshadow_relax+0xd9)
> :|  # [  843] TASK1   99 -2777+   6.932  xnpod_schedule+0x81 (xnpod_suspend_thread+0x1e4)
> :|  # [  827] sshd    99 -2762+   4.917  xnpod_schedule+0x7a2 (xnintr_irq_handler+0xec)

The trace captured almost 200 further milliseconds, but no more
switching takes place (full dump available on request).

So we have

TASK2 resume -> TASK2 relax -> TASK1 resume/TASK2 preempted ->
TASK2 relax -> Lock-up

Gilles, are we able to produce such a sequence with the switchtest?

OK, it's time now to think a bit about what we see here. Any ideas welcome.

Jan


PS: Here are the stats you asked for, Philippe:

CPU  PID    MSW        CSW        PF    STAT       %CPU  NAME
  0  0      0          5493       0     01400080   99.1  ROOT
  0  843    646        1294       0     00c00180    0.0  TASK1
  0  844    2152       4337       0     00c00088    0.0  TASK2
  0  0      0          689962     0     00000000    0.9  IRQ0: [timer]


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 249 bytes --]

  parent reply	other threads:[~2006-12-03 21:09 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-29 12:19 Rép. : Re: [Xenomai-help] Switch mode with x86 Nicolas BLANCHARD
2006-12-03 19:32 ` Jan Kiszka
2006-12-03 19:59   ` Philippe Gerum
2006-12-03 20:10     ` Jan Kiszka
2006-12-03 21:09     ` Jan Kiszka [this message]
2006-12-03 23:30       ` Philippe Gerum
2006-12-04  8:13         ` Jan Kiszka
2006-12-04 21:06           ` Jan Kiszka
2006-12-05 22:17             ` Philippe Gerum
2006-12-06  8:37               ` Jan Kiszka
2006-12-06  9:06                 ` Philippe Gerum
2006-12-05 22:18             ` Philippe Gerum
2006-12-04  9:46       ` Gilles Chanteperdrix
2006-12-03 21:02   ` Philippe Gerum
     [not found] <s575af89.064@domain.hid>
2006-12-05 17:15 ` Jan Kiszka
  -- strict thread matches above, loose matches on Subject: below --
2006-12-05 12:33 Nicolas BLANCHARD
     [not found] <s56d88c0.000@domain.hid>
2006-11-29 13:52 ` Jan Kiszka
2006-11-29 10:25 Nicolas BLANCHARD
     [not found] <s56c97a4.096@domain.hid>
2006-11-28 20:27 ` Jan Kiszka
2006-11-28 19:09 Nicolas BLANCHARD

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=45733D1B.7010805@domain.hid \
    --to=jan.kiszka@domain.hid \
    --cc=rpm@xenomai.org \
    --cc=xenomai@xenomai.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.