From: Philippe Gerum <rpm@xenomai.org>
To: Russell Johnson <russell.johnson@kratosdefense.com>
Cc: "xenomai@lists.linux.dev" <xenomai@lists.linux.dev>,
Bryan Butler <Bryan.Butler@kratosdefense.com>,
Shawn McManus <shawn.mcmanus@kratosdefense.com>
Subject: Re: EVL Thread Priorities
Date: Thu, 17 Nov 2022 17:43:11 +0100 [thread overview]
Message-ID: <87y1s9bkd3.fsf@xenomai.org> (raw)
In-Reply-To: <8735ahczf9.fsf@xenomai.org>
Philippe Gerum <rpm@xenomai.org> writes:
> Russell Johnson <russell.johnson@kratosdefense.com> writes:
>
>> [[S/MIME Signed Part:Undecided]]
>> Hello,
>>
>>
>>
>> We are seeing an issue with setting thread priorities. I’m not sure if this is a real problem that is contributing to our issues, or if it’s just
>> something weird happening.
>>
>>
>>
>> Here is a list of the real time threads and the priority and CPU affinity settings we’re asking for.
>>
>>
>>
>> Thread Priority CPU
>>
>> ___________________________
>>
>> Main 50 0
>>
>> TxStartup 52 0
>>
>> RxStartup 51 0
>>
>> DummyTxConfig 89 2
>>
>> DummyTxService 88 3
>>
>> TxMain 87 4
>>
>> TxWorker(n) 86 8-11
>>
>> DummyTxSample 85 5
>>
>> DummyRxConfig 79 2
>>
>> DummyRxService 78 3
>>
>> RxMain 77 4
>>
>> RxWorker(n) 76 8-11
>>
>>
>>
>> If we run ‘top’ we can see the priority settings:
>>
>> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
>>
>> 32130 root 20 0 3731268 2.5g 110748 S 0.0 16.2 0:05.54 realtime_sfhm
>>
>> 32140 root 20 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 sigthread
>>
>> 32144 root -51 0 3731268 2.5g 110748 S 0.0 16.2 0:00.09 Main
>>
>> 32150 root -53 0 3731268 2.5g 110748 S 0.0 16.2 0:00.21 TxStartup
>>
>> 32151 root -86 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 DummyTxSample
>>
>> 32152 root -87 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 TxWorker0
>>
>> 32153 root -87 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 TxWorker1
>>
>> 32154 root -87 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 TxWorker2
>>
>> 32155 root -52 0 3731268 2.5g 110748 S 0.0 16.2 0:00.13 RxStartup
>>
>> 32156 root -87 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 TxWorker3
>>
>> 32157 root -88 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 TxMain
>>
>> 32158 root -89 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 DummyTxService
>>
>> 32159 root -80 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 DummyRxConfig
>>
>> 32160 root -78 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 RxMain
>>
>> 32161 root -77 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 RxWorker0
>>
>> 32162 root -79 0 3731268 2.5g 110748 S 0.0 16.2 0:00.00 DummyRxService
>>
>>
>>
>> Top apparently has this weirdness where it displays real-time thread priorities as –(P+1), which I guess is how it’s maintained in the kernel.
>> This seems to be a known issue, but it appears that, with this caveat, that the thread priorities are being set properly within the pthreads
>> implementation. The two non-realtime threads are part of our startup process. They never execute within the EVL context.
>>
>>
>>
>> However, if we look at the same threads using ‘evl ps’, we get this result:
>>
>> CPU PID SCHED PRIO ISW CTXSW SYS RWA STAT TIMEOUT %CPU CPUTIME NAME
>>
>> 0 32144 fifo 50 34 1316 2910 0 Dto 011.587 0.0 00:027.437 Main
>>
>> 0 32150 fifo 52 4 1286 1974 0 Dto 075.003 0.0 00:023.977 TxStartup
>>
>> 5 32151 fifo 87 0 51201 587379 49931 wbto 907.752 1.0 01:343.085 DummyTxSample
>>
>> 8 32152 fifo 87 0 19580 207489 19653 wbto 998.796 1.0 01:240.410 TxWorker0
>>
>> 9 32153 fifo 87 0 19000 206602 19071 wbto 905.257 1.0 01:242.255 TxWorker1
>>
>> 10 32154 fifo 87 0 16976 197880 17049 wbto 901.719 1.0 01:314.756 TxWorker2
>>
>> 0 32155 fifo 87 4 141 646 8 Dbto 966.055 0.0 00:007.204 RxStartup
>>
>> 11 32156 fifo 87 0 16372 180026 16439 wbto 907.961 1.0 01:273.781 TxWorker3
>>
>> 4 32157 fifo 87 0 13443 851659 13390 wto 902.939 1.5 01:929.911 TxMain
>>
>> 3 32158 fifo 88 0 1281 3845 0 Dto 004.172 0.0 00:039.957 DummyTxService
>>
>> 2 32159 fifo 87 0 6515 260458 5314 wbto 073.624 0.7 00:858.282 DummyRxConfig
>>
>> 4 32160 fifo 87 0 49059 626499 49185 wbto 972.854 2.4 03:082.805 RxMain
>>
>> 8 32161 fifo 87 0 33436 386429 32535 wbto 065.114 1.8 02:317.974 RxWorker0
>>
>> 3 32162 fifo 87 0 37243 378069 36132 Dbto 071.350 1.9 02:374.748 DummyRxService
>>
>>
>>
>> CPU affinity settings look to be correct, but the priorities shown by ‘evl ps’ are not consistent with those from ‘top’. Furthermore, there seems
>> to be some difference between runs. Sometimes the priorities will be closer to those we asked for. At other times it looks more like this, where
>> they all appear to be set to 87.
>>
>>
>>
>> I don’t know if this is just a mistake by the ‘evl ps’ command, or if the EVL scheduler is actually using the wrong priorities for scheduling.
>> Relative to our other issue that you’re looking at, this one is definitely of lower importance, unless it is related in some way to that other
>> problem.
>
> The 'b' flag appearing in the STAT field for a thread means that it is
> undergoing a priority boost due to mutex priority
> inheritance/protection, PRIO displays the effective priority which may
> be boosted - not the base priority.
>
> By the way, if evl ps is able to catch this output frequently, this
> means that your app triggers *a lot* of priority inheritance, maybe a
> bit too much/frequent sharing of resources between threads which belong
> to distinct priority groups?
CAUTION: if these priorities remain unchanged over time, then there
could be an issue in the core, i.e. some threads not being deboosted
properly. You may want to check this by running a display loop, e.g.
# watch -n1 evl ps -l
--
Philippe.
prev parent reply other threads:[~2022-11-17 16:45 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-17 15:57 EVL Thread Priorities Russell Johnson
2022-11-17 16:20 ` Philippe Gerum
2022-11-17 16:43 ` Philippe Gerum [this message]
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=87y1s9bkd3.fsf@xenomai.org \
--to=rpm@xenomai.org \
--cc=Bryan.Butler@kratosdefense.com \
--cc=russell.johnson@kratosdefense.com \
--cc=shawn.mcmanus@kratosdefense.com \
--cc=xenomai@lists.linux.dev \
/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.