All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philippe Gerum <rpm@xenomai.org>
To: "François Legal" <devel@thom.fr.eu.org>
Cc: xenomai@xenomai.org
Subject: Re: Hunting mode switches
Date: Tue, 01 Jun 2021 10:46:10 +0200	[thread overview]
Message-ID: <871r9mht0t.fsf@xenomai.org> (raw)
In-Reply-To: <10a7-60b5e600-39-35a6e6c0@9974389>


François Legal via Xenomai <xenomai@xenomai.org> writes:

> Le Lundi, Mai 31, 2021 20:57 CEST, François Legal via Xenomai <xenomai@xenomai.org> a écrit: 
>  
>> Le Lundi, Mai 31, 2021 18:14 CEST, Jan Kiszka <jan.kiszka@siemens.com> a écrit: 
>>  
>> > On 31.05.21 18:06, François Legal via Xenomai wrote:
>> > > Hello,
>> > > 
>> > > I'm having trouble hunting mode switches on an arm embedded application.
>> > > 
>> > > When I look at cat /proc/xenomai/sched/stat
>> > > 
>> > > CPU  PID    MSW        CSW        XSC        PF    STAT       %CPU  NAME
>> > >   0  0      0          476986     0          0     00218000   84.5  [ROOT/0]
>> > >   1  0      0          137743     0          0     00218000   99.3  [ROOT/1]
>> > >   1  667    0          137550     0          0     00200042    0.7  [rtnet-stack]
>> > >   0  669    0          2          0          0     00220042    0.0  [rtnet-rtpc]
>> > >   1  901    110        218        203        0     00264044    0.0  APP_Main
>> > >   0  911    1          1216       3524       0     00240046    0.0  ThreadPar
>> > >   0  912    3          56683      3531       0     00240046    0.2  ThreadMessage
>> > >   0  913    309702     470522     2152301    0     00240046    8.9  ThreadExec
>> > >   0  914    7          62         71         0     00240042    0.0  TheadGO
>> > >   0  915    3          647        1190       0     00248046    0.0  ThreadDbg
>> > >   0  916    1          2024       3087       0     00248046    0.0  ThreadCt
>> > >   0  917    1          35801      320489     0     00248046    0.8  ThreadSupInv
>> > >   0  918    1          1231       3596       0     00248046    0.0  ThreadMessage2
>> > >   0  919    1          161554     479305     0     00248042    1.4  ThreadSched
>> > >   0  0      0          247850     0          0     00000000    0.4  [IRQ18: [timer]]
>> > >   1  0      0          15419      0          0     00000000    0.0  [IRQ18: [timer]]
>> > >   0  0      0          137548     0          0     00000000    1.5  [IRQ31: rteth0]
>> > >   1  0      0          0          0          0     00000000    0.0  [IRQ31: rteth0]
>> > >   0  0      0          1          0          0     00000000    0.0  [IRQ118: rteth1-tx]
>> > >   1  0      0          0          0          0     00000000    0.0  [IRQ118: rteth1-tx]
>> > >   0  0      0          0          0          0     00000000    0.0  [IRQ119: rteth1-rx]
>> > >   1  0      0          0          0          0     00000000    0.0  [IRQ119: rteth1-rx]
>> > > 
>> > > But when following the procedure in [1], I get 
>> > > no slacker
>> > > 
>> > > I can however see that Thread 913 seem to switch to secondary more than once out of 2 cycles !
>> > > What am I doing wrong.
>> > > 
>> > 
>> > CONFIG_XENO_OPT_DEBUG_TRACE_RELAX is on?
>> > 
>> 
>> Yes, it is.
>> 
>> > Did you also try the in-app instrumentation via SIGDEBUG, maybe
>> > attaching gdb to the process to catch the unwanted cases?
>> > 
>> 
>> No, not yet. It seems mode switches happen hundreds of time every seconds, so I was willing to try the slackspot.
>> I'll try that tomorrow and report back to the list 
>> 
>
> So trying the manual way, there seem to be something happening, but I could not tell exactly what, and I not sure how to track this.
>
> On thread ThreadExec, I get execution halted with SIGXCPU, and a backtrace indicating getpid(), then __pthread_kill() which I'm 100% sure I never call !
>
> Moreover, when being halted at that point, all threads are not created, and all of which are created seem to have done 3 or 4 MSW each, and without triggering any break.
>
> Moreover, in the stats capture below, the APP_Main (the main program entry), is looping on a 1s nanosleep, and it seems the MSW number increases once per second.
>
> I'm really confused now.
>

You may be receiving a SIGDEBUG signal from the Cobalt core which is not
handled by cobalt_sigdebug_handler() in lib/cobalt (internal.c) and
therefore passed on to the original handler, likely SIG_DFL. So first
thing is to run the app over gdb, breakpoint into
cobalt_sigdebug_handler(), then inspect the cause code in siginfo and
the backtrace at this point (bt).

-- 
Philippe.


  parent reply	other threads:[~2021-06-01  8:46 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-31 16:06 Hunting mode switches François Legal
2021-05-31 16:14 ` Jan Kiszka
2021-05-31 18:57   ` François Legal
2021-06-01  7:47     ` François Legal
2021-06-01  8:31       ` Jan Kiszka
2021-06-02 10:26         ` François Legal
2021-06-02 10:59           ` Jan Kiszka
2021-06-02 15:06             ` François Legal
2021-06-02 15:09               ` François Legal
2021-06-02 15:13                 ` Jan Kiszka
2021-06-03  8:57             ` François Legal
2021-06-03 18:39               ` François Legal
2021-06-04  7:21                 ` Jan Kiszka
2021-06-04 13:04                   ` François Legal
2021-06-01  8:46       ` Philippe Gerum [this message]
  -- strict thread matches above, loose matches on Subject: below --
2021-05-31 16:06 François Legal

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=871r9mht0t.fsf@xenomai.org \
    --to=rpm@xenomai.org \
    --cc=devel@thom.fr.eu.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.